仅在MYSQL中最后返回的行上执行JOIN

问题描述 投票:0回答:1

我有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
mysql join left-join inner-join outer-join
1个回答
0
投票

您可以像下面这样重写查询

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;
© www.soinside.com 2019 - 2024. All rights reserved.