当id有多个值时,选择最近的记录(即ORDER by)



例如,devices表如下:

<表类> id user_id last_used_at tbody><<tr>11112000-01-01就是21112003-01-01就是32222000-01-01就是42222003-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;

最新更新