gpt4 book ai didi

sql - 根据多个 id 获取最新出现的行

转载 作者:行者123 更新时间:2023-11-29 14:13:21 26 4
gpt4 key购买 nike

我正在尝试查找每个用户每个 session 的最后一条消息。每个消息行都有用户 ID 和它是哪个用户 session (每个 session 递增 1)

我的表格是这样的:

user_id | timestamp                  | usermessage   | user_session_id

1 | 2019-08-28 14:50:39.150000 | hi | 1
1 | 2019-08-28 14:50:40.150000 | goodbye | 1
1 | 2019-09-01 10:50:39.150000 | hello again | 2
1 | 2019-09-01 11:50:39.150000 | goodbye again | 2
2 | 2019-07-09 07:53:56.680000 | hello | 1
2 | 2019-07-10 09:23:16.100000 | hi there | 2

我希望检索每个用户在每个 session 中发布的最后一条消息(最新时间戳)。所以我的预期输出是这样的

user_id | timestamp                  | usermessage   | user_session_id
1 | 2019-08-28 14:50:40.150000 | goodbye | 1
1 | 2019-09-01 11:50:39.150000 | goodbye again | 2
2 | 2019-07-09 07:53:56.680000 | hello | 1
2 | 2019-07-10 09:23:16.100000 | hi there | 2

提前致谢

最佳答案

在 Postgres 中,我会推荐 distinct on:

select distinct on (user_id, user_session_id) t.*
from t
order by user_id, user_session_id, timestamp desc;

在 Postgres 中,这通常是执行此类查询的最有效方法。为了获得最佳性能,您需要在 (user_id, user_session_id, timestamp desc) 上建立索引。

关于sql - 根据多个 id 获取最新出现的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58123904/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com