gpt4 book ai didi

mysql - GROUP BY mysql中的两个字段

转载 作者:可可西里 更新时间:2023-11-01 07:49:57 25 4
gpt4 key购买 nike

我在 mysql 中有一个表,用于存储用户之间的消息。 该表具有以下字段:

ID   from_memberID  to_memberID   message                 Date
+----+--------------+------------+-----------------------+-----------------------+
1 205 207 hello Peter 19/08/2012 20:00:00
2 207 205 Hi frank 19/08/2012 20:01:00
3 205 208 hello Jennifer 19/08/2012 20:10:00
4 207 210 hello Peter 19/08/2012 20:20:00

好吧,假设我只想从用户 205 的每个对话中获取最后一条消息

它应该得到寄存器 2 和 3,即用户 (205-207) 和用户 (205-208) 之间的对话。事实上,我使用 GROUP BY from_memberID,然后在我的结果中也添加了寄存器 ID=1。

这是声明的用途:

SELECT *
FROM
(SELECT msg.ID,
msg.mensaje,
msg.from_miembroID,
msg.fecha,
msg.read,
FROM mensajes as msg
INNER JOIN miembros as mem ON mem.ID=IF(msg.from_miembroID=205, msg.to_miembroID, msg.from_miembroID)
WHERE msg.to_miembroID=205 OR msg.from_miembroID=205
ORDER BY msg.fecha DESC) as temp
GROUP BY from_miembroID

我如何使用 GROUP BY 将两列(from_memberID、to_memberID)视为一个列?

提前致谢。

最佳答案

您可以使用新的自定义字段,按照自定义规则对 ID(from_memberIDto_memberID)进行排序,例如较小的总是第一个。

例如:

SELECT 
IF(from_memberID < to_memberID,
CONCAT(from_memberID, '-', to_memberID),
CONCAT(to_memberID, '-', from_memberID)
) as conversation_ids
FROM `messages`

该字段将返回唯一组合,例如205-207 不管是205发消息给207还是207发消息给207。

最后,您可以按此值分组并获得独特的组合。

关于mysql - GROUP BY mysql中的两个字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12029290/

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