【发布时间】:2020-09-27 04:12:12
【问题描述】:
我有两张桌子,Objects 和 Events。
Objects 的结构如下:
ID | Password
-------------
0 | aaaa
1 | bbbb
事件的结构如下:
Object | Date | Type
--------------------------
0 | 2020-06-01 | 0
0 | 2020-06-02 | 1
我想要实现的是:对于每个 ID,获取最后一个关联的事件类型。在上面的示例中,对象0 将与1 相关联,因为1 是2020-06-02 上最后一个事件的类型。此外,当一个对象没有任何事件时,将1 关联到它。
我尝试为每个对象排序事件,这样我就可以使用查询加入我的对象信息:
SELECT ID, IFNULL(e.Type, 1)
FROM objects o
LEFT JOIN (
SELECT e.Object, e.Date, e.Type
FROM events e
WHERE e.Object = o.ID
ORDER BY e.Date DESC
LIMIT 1
) AS e ON e.Object = o.ID
由于o.ID 未知,它不起作用,但我真的想不出任何其他解决方案。因此我的问题是:如何在连接表的条件内使用外部表的属性?
如果有不清楚的地方请告诉我,谢谢。
【问题讨论】:
-
您对此样本数据的预期输出是什么?
-
我只需要 ID 和类型。这就是我使用
SELECT ID, IFNULL(e.Type, 1)的原因。
标签: mysql join greatest-n-per-group correlated-subquery