获取数据库中每个用户的最新状态更新
Get latest status update for every user in the database
我有 status_updates
table 其中包含每个用户的每个状态更新的行,
id nickname status timestamp
-----------------------------------------------
14638 lovely_john offline 2020-07-14 08:37:18
14640 big_papa online 2020-07-14 08:57:10
当状态改变时,添加一个新行。
如何 select 每个用户的最新单行(根据时间戳)并在一次查询中获取它们?因此,如果我有 100 个用户,我将获得 100 行最新状态更改。
谢谢!
请使用以下查询。你必须使用 ROW_NUMBER()
select id, nickname, status, timestamp
from
(select id, nickname, status, timestamp, row_number() over(partition by user_id order
by timestamp desc) as rnk) qry
where rnk = 1;
这将为您提供每个用户的最新记录
这最好由 DISTINCT ON
处理
select distinct on (nickname) *
from status_updates
order by nickname, timestamp desc;
我有 status_updates
table 其中包含每个用户的每个状态更新的行,
id nickname status timestamp
-----------------------------------------------
14638 lovely_john offline 2020-07-14 08:37:18
14640 big_papa online 2020-07-14 08:57:10
当状态改变时,添加一个新行。
如何 select 每个用户的最新单行(根据时间戳)并在一次查询中获取它们?因此,如果我有 100 个用户,我将获得 100 行最新状态更改。
谢谢!
请使用以下查询。你必须使用 ROW_NUMBER()
select id, nickname, status, timestamp
from
(select id, nickname, status, timestamp, row_number() over(partition by user_id order
by timestamp desc) as rnk) qry
where rnk = 1;
这将为您提供每个用户的最新记录
这最好由 DISTINCT ON
select distinct on (nickname) *
from status_updates
order by nickname, timestamp desc;