MYSQL JOIN并基于MAX获取完整行

时间:2016-10-21 08:29:23

标签: mysql sql join subquery max

真的试图寻找解决方案,但我无法让它发挥作用。 我在Mysql event_partiesevents中有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.的这两个表之间加入 我需要表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

几天来一直在努力:(

/克里斯蒂安

2 个答案:

答案 0 :(得分:1)

只为最高的一个: ORDER BY g_event_id DESC, event_time DESC LIMIT 1

更新:

对于最高的东西,你需要一个双重连接。 首先将所有表放在一个表中,然后再加入, 并且没有后来evetn的那一行是最后的事件。

用于g_event_id作为后面的定义

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

答案 1 :(得分:1)

试试这个:

select 
ep.agent_id,
ep.g_event_id,
e.event_id,
e.event_time
from event_parties ep
join events e on e.g_event_id = ep.g_event_id
order by e.g_event_id DESC, e.event_time desc
limit 1