gpt4 book ai didi

sql - 从 oracle 为每个组选择最新的行

转载 作者:行者123 更新时间:2023-12-04 01:46:23 25 4
gpt4 key购买 nike

我在留言簿中有一张包含用户评论的表格。列是:id、user_id、title、comment、timestamp。

我需要为每个用户选择最新的行。
我曾尝试使用 group by 执行此操作,但尚未对其进行管理,因为我无法在按 user_id 分组的同一查询中选择任何其他内容:

SELECT user_id, MAX(ts) FROM comments GROUP BY user_id

例如,在此查询中,我无法添加到还选择列 id、tilte 和 comment。如何才能做到这一点?

最佳答案

您可以使用分析函数

SELECT *
FROM (SELECT c.*,
rank() over (partition by user_id order by ts desc) rnk
FROM comments c)
WHERE rnk = 1

根据您希望如何处理关系(如果可以有两行具有相同的 user_idts ),您可能需要使用 row_numberdense_rank函数而不是 rank . rank如果有平局,将允许多行排在第一位。 row_number如果有平局,将任意返回一行。 dense_rank会表现得像 rank对于第一行并列但会认为下一行是第二行而不是第三行,假设两行并列第一。

关于sql - 从 oracle 为每个组选择最新的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40404497/

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