在一个领域不止一个结果

时间:2017-07-09 11:30:33

标签: mysql group-by aggregate-functions

如果我有一个表“消息”并且用户可以向多个用户发送相同的消息,当我显示消息时如何在一个字段中对所有用户进行分组?

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

1 个答案:

答案 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()的问题以及一些开发人员避免它的原因是:它将非常好的规范化数据转换为非规范化结果集。列中以逗号分隔的值非常麻烦。但如果你只是用它来显示,那应该没问题。

相关问题