gpt4 book ai didi

MySQL 选择不同用户的最近传入或传出消息

转载 作者:行者123 更新时间:2023-11-29 14:19:52 24 4
gpt4 key购买 nike

我有一个表结构,用于保存发送和接收的消息的记录,如下所示;

Database table structure

member_id1 是发送者,member_id2 是接收者。

现在我想要实现的是获取member_id为3的用户的最新消息的行。结果应该只包含消息id为2和4的2行,因为2是其中member_id为3的用户和member_id为2的用户之间的最后一条消息,4是member_id为3的用户和member_id为1的用户之间唯一的一条消息。

结果不应包含 message_id 为 3 的行,因为它与 member_id 为 3 的用户无关,而 message_id 为 1 的行因为它已被 message_id 为 2 的消息过期.

希望我已经向那些可以帮助我解决此问题的人阐明了我的问题。

最佳答案

我想我已经找到了自己问题的正确答案。虽然我不太确定,但它似乎效果很好。对于那些需要解决此类问题的人;尝试一下:

SELECT m1.* 
FROM table_name m1
INNER JOIN (SELECT MAX(senddate) AS senddate,
IF(member_id2 = 3, member_id1, member_id2 ) AS user
FROM table_name
WHERE (member_id1 = 3 AND delete1=0) OR
(member_id2 = 3 AND delete2=0)
GROUP BY user) m2
ON m1.senddate = m2.senddate AND
(m1.member_id1 = m2.user OR m1.member_id2 = m2.user)
WHERE (member_id1 = 3 AND delete1=0) OR
(member_id2 = 3 AND delete2=0)
ORDER BY m1.senddate DESC

关于MySQL 选择不同用户的最近传入或传出消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11922275/

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