mysql - 仅对 MYSQL 中最后返回的行执行 JOIN
问题描述
我有table t1
哪些存储所有请求。我有table t2
哪些存储与表 t1 中提出的请求相关的审计。为了获得每个请求的最新审核,我需要在两个表上执行连接。
我可以使用以下查询执行 JOIN:
SELECT
t2.id, t1.name,
t2.Msg
FROM
requests t1
LEFT JOIN audits t2 ON t1.AuditId = t2.AuditId
ORDER BY t2.id DESC;
上面的查询返回结果如下:
id Name Msg
56895415 ABC05 Message5
56895414 ABC05 Message4
56895413 ABC05 Message3
56895303 ABC04 Message5
56895302 ABC04 Message4
56895301 ABC04 Message3
我想修改查询,以便only the last row(with highest id value)
为每个显示。t1.name
换句话说,我的输出应如下所示:
id Name Msg
56895415 ABC05 Message5
56895303 ABC04 Message5
解决方案
您可以像下面这样重写查询
SELECT
t2.id, t1.name,
t2.Msg
FROM
requests t1
LEFT JOIN (SELECT id, Msg FROM audits ORDER BY id DESC LIMIT 1) t2 ON t1.AuditId = t2.AuditId
ORDER BY t2.id DESC;
推荐阅读
- mysql - MySQL 创建更新触发器时出错
- uber-api - Uber-api 创建用户请求并为同一用户预订多个游乐设施
- django - 在 django-filter 的 numericFilter 中添加选项
- ios - iOS Swift 4 Status bar - disable Translucent
- mysql - 如何根据另一列 MySQL 的 MAX DATE 更新一列
- python - Django:form.as_p 未显示在呈现的模板中
- css - 元素 $variable 仅通过名称解析,而不在 Sass PhpStorm 中使用显式
- google-app-engine - 撤消路由部署
- javascript - 电子中的 JsPDF
- javascript - ES6:如何遍历对象数组并更改其中的一项