mysql如何通过两列联接并仅从联接表中获取最新记录?

时间:2019-02-18 18:24:02

标签: mysql join max

我有表格设置,位置和结果。

我想获取每对设置+位置的最新结果(最大ID或日期列)。

因此,如果我有4个设置,每个设置2个位置,则我希望获得8个行,每个设置+结果的最新结果ID。

此查询部分起作用。我得到了一对设置+位置,但是加入的结果是设置的最新结果(我需要分别设置和定位)。

SELECT s.id, r.id AS last_result_id, r.date AS last_result_date
FROM result r
JOIN (SELECT max(r.id) max_id, r.setting_id
     FROM result r
     GROUP BY r.setting_id) r_sub 
     ON r.id = r_sub.max_id
JOIN setting s ON r.setting_id = m.id;

有什么建议吗?

1 个答案:

答案 0 :(得分:2)

您可以在“设置”表和“位置”表之间使用简单的JOIN并获取每个表的最大结果ID,例如:

SELECT s.id, l.id, 
(SELECT MAX(r.id) FROM result WHERE r.setting_id = s.id) As result_id
FROM settings s JOIN location l ON s.id = l.setting_id;