作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我在 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_memberID
、to_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/
我是一名优秀的程序员,十分优秀!