我真的试图寻找解决方案,但我无法让它发挥作用。
我在 Mysql event_parties
和 events
中有 2 个表。
event_parties:
g_event_id agent_id
---------- --------
2917 2
2918 2
2919 2
3067 3
3078 3
events:
g_event_id event_id event_time
---------- -------- ----------
2917 29 2016-10-19 15:24:25
2918 31 2016-10-19 15:24:28
2919 30 2016-10-19 15:29:46
3067 29 2016-10-20 15:33:46
3078 30 2016-10-21 15:29:46
我需要用 g_event_id
作为 ID 在这两个表之间进行 JOIN。
我需要表 events
中的所有字段,并且我需要具有最高 g_event_id
或最高 event_time
的行。
像这样:
agent_id g_event_id event_id event_time
-------- ---------- -------- ----------
2 2919 30 2016-10-19 15:29:46
3 3078 30 2016-10-21 15:29:46
这几天一直在苦苦挣扎:(
/克里斯蒂安
最佳答案
对于最高的一个:
ORDER BY g_event_id DESC,event_time DESC LIMIT 1
更新:
对于最高的东西,你需要一个双连接。 先全在一张表,以后再加入, 没有稍后事件的一行是最新事件。
对于 g_event_id 作为 later 的定义
SELECT event_parties.agent_id, event_parties.g_event_id, event_id, event_time
FROM event_parties
INNER JOIN events USING (g_event_id)
LEFT JOIN event_parties AS later_event
ON (later_event.agent_id = event_parties.agent_id
AND later_event.g_event_id > event_parties.g_event_id)
WHERE later_event.g_event_id IS NULL
GROUP BY event_parties.agent_id
关于MYSQL JOIN 并根据 MAX 获取整行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40171844/