如果我有一个表“消息”并且用户可以向多个用户发送相同的消息,当我显示消息时如何在一个字段中对所有用户进行分组?
ID SUBJECT MESSAGE FROM TO
1 Test 1 Message 1 John
2 Test 2 Message 2 Jackson
这是我的选择:
SELECT messages.id_message, subject, body_message, name_user,
from messages, registro_mensajes
INNER JOIN users on messages.id_user_sender = users.id_user
数据库:
MESSAGES
id_message
subject
body_message
id_user_sender
REGIST
id_regist
id_message
id_user_sender
id_user_destin
THX
答案 0 :(得分:1)
GROUP_CONCAT()
is the excellent, though MySQL - 具体,aggregate function用于处理此要求。
你可以尝试这样的事情。
SELECT a.message_id, a.message_text,
GROUP_CONCAT(b.user ORDER BY b.user) users
FROM message a
LEFT JOIN destination b ON a.message_id = b.message_id
GROUP BY a.message_id, a.message_text
(抱歉,我无法从你的问题中找出你的表结构,所以这是一个例子)。
GROUP_CONCAT()
的问题以及一些开发人员避免它的原因是:它将非常好的规范化数据转换为非规范化结果集。列中以逗号分隔的值非常麻烦。但如果你只是用它来显示,那应该没问题。