MYSQL JOIN 并根据 MA​​X 获取整行

标签 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 在这两个表之间进行 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 并根据 MA​​X 获取整行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40171844/

相关文章:

mysql - SQL 在 select 子句中重复长公式

mysql - 如何从 mysqldump 插入 float

php - 如何将复选框值保存到数据库中

MySQL 添加长文本列使查询极其缓慢 - 有什么性能提示吗?

MySQL连接不同的表

sql - 如何在postgresql中连接3个表

mysql - 使用与分组数据行的联接

mysql - 组功能的无效使用 - #1111

mysql - PostgreSQL - 创建 View 时需要帮助

php - 使用两列将两个 SQL 表相互连接