【发布时间】:2014-11-17 08:26:33
【问题描述】:
我有一个简单的事件日志表:
uid | event_id | event_data
----+----------+------------
1 | 1 | whatever
2 | 2 |
1 | 3 |
4 | 4 |
4 5 |
如果我需要给定用户的最新事件,那很明显:
SELECT * FROM events WHERE uid=needed_uid ORDER BY event_id DESC LIMIT 1
但是,假设我需要数组中每个用户 ID 的最新事件。例如,对于上面的表格和用户{1, 4},我期望事件{3, 5}。在不使用 pgSQL 循环的情况下,这是否可以在纯 SQL 中实现?
【问题讨论】:
-
你真的想要一个 array 作为结果吗?还是输入数组中元素顺序的整行?这将提出一个更有趣的问题,如何保留给定的顺序...
-
@ErwinBrandstetter 我需要这些行,但顺序并不重要。
-
无论如何,我添加了另一个答案,有更好的表现潜力。
标签: sql postgresql greatest-n-per-group