例如,devices
表如下:
<表类>
id
user_id
last_used_at
tbody><<tr>1 111 2000-01-01就是 2111 2003-01-01就是 3 222 2000-01-01就是 4222 2003-01-01就是 表类>
您可以使用PostgreSQL特定的DISTINCT ON
:
SELECT DISTINCT ON (user_id) *
FROM devices
ORDER BY user_id, last_used_at DESC
有多种方法可以做到这一点。使用窗口函数是其中之一-
SELECT *
FROM (SELECT *, ROW_NUMBER() OVER(PARTITION BY user_id ORDER BY last_used_at DESC) RN
FROM devices)
WHERE user_id IN (111, 222)
AND RN = 1;