gpt4 book ai didi

mysql - 对来自 2 个不同列的 Union 结果使用 Order By 和 Group by

转载 作者:行者123 更新时间:2023-11-29 07:12:30 31 4
gpt4 key购买 nike

这是我的 table

ID      Value           SenderID     RecieverID
1 Hello There 2 7
2 etc etc 7 5
3 etc 2 6
4 ee 7 2
5 asdas 2 7
6 asdas 2 5
7 asdas 7 5

我想要的是来自所有行的senderID或receiverID的值,其中特定值(假设2)出现在这两列中的任何一列中
我使用了这个查询

SELECT `SenderID` FROM `messages` WHERE `RecieverID` = 2
UNION
SELECT `ReceiverID` FROM `messages` WHERE `SenderID` = 2

给出独特的答案,但顺序错误像这样

ReceiverID
7
6
5

我期望此查询的答案按 ID DESC 排序,其中出现特定的发件人或收件人 ID,例如在我的表中,senderid 2 和 reverid 7 之间的消息位于 id 5 和最新 id btweend sendr2 和6 在 id 3 处,btweed sndr2 和 5 处是 ID 7,所以上面的答案应该像这样排序 5, 7, 6 而不是 7,6,5

最佳答案

这将按最近的对话对发件人/收件人 ID 进行排序:

SELECT senderID -- , MAX(ID) as maxID -- uncomment to see maxID
FROM (
SELECT ID, `SenderID` FROM `messages` WHERE `RecieverID` = 2
UNION ALL
SELECT ID, `RecieverID` FROM `messages` WHERE `SenderID` = 2
) as sub
GROUP BY (SenderID)
ORDER BY MAX(ID) DESC

http://sqlfiddle.com/#!9/6d7bc0/1

关于mysql - 对来自 2 个不同列的 Union 结果使用 Order By 和 Group by,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39132457/

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