gpt4 book ai didi

sql - 从按另一个 ID 分组的表中选择最新的(前 1 个)

转载 作者:行者123 更新时间:2023-12-02 08:49:02 26 4
gpt4 key购买 nike

我有一个表,其中包含用户发送的消息和来自用户的消息。我如何使用 SQL 来选择用户发送的所有消息。我想按 MessageSenderUserID 对结果进行分组。我还想只返回每个收件人的最新信息。

我尝试在 having 子句中使用 MAX,但似乎这不是正确的解决方案。

我最好将其描述为以下查询的组合:

SELECT TOP 1 MessageID, MessageSent, MessageSenderUserID, MessageRecipientUserID
FROM [Messaging_Message]
WHERE MessageSenderUserID = 799
ORDER BY MessageSent DESC

SELECT MessageSenderUserID
FROM [Messaging_Message]
GROUP BY MessageSenderUserID

谢谢!

最佳答案

我最近才学会这种(最令人惊讶和有趣的)方法来获得组中的前 1 项:

select top 1 with ties
MessageID,
MessageSent,
MessageSenderUserID,
MessageRecipientUserID
from [Messaging_Message]
order by row_number() over (partition by MessageSenderUserID
order by MessageSent desc)

技巧按顺序排列 - 结果按部分分组并按排序键排序,导致每个组的第一行接收编号 1。 With ties 返回所有值。哦,应用机械师的快乐!

关于sql - 从按另一个 ID 分组的表中选择最新的(前 1 个),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10001347/

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