我目前有一个MySQL SELECT语句,用于从两个表中提取信息以显示用于私人消息传递的“已发送消息”字段。MySQL选择 - 将COUNT与GROUP_CONCAT结合使用
我想知道我可以怎么做COUNT添加到我的查询来计算一个线程“接收器”的数量。
这里是我的表结构的基本精神,(注:两个表之间的关系的领带,是PM-信息的“邮件ID”和pm_data的“ID”):
pm_info:
id message_id receiver_id is_read read_date
pm_data:
id date_sent title sender_id thread_id content
这里是我的SELECT语句:
SELECT pm_info.is_read, group_concat(DISTINCT receiver.usrFirst) as receiver_name,
pm_data.date_sent, pm_data.title, pm_data.thread_id, pm_data.id as data_id,
MAX(date_sent) AS thread_max_date_sent
FROM pm_info
INNER JOIN pm_data ON pm_info.message_id = pm_data.id
INNER JOIN tblUsers AS receiver ON pm_info.receiver_id = receiver.usrID
WHERE pm_data.sender_id = '$usrID'
GROUP BY pm_data.thread_id
ORDER BY thread_max_date_sent DESC
它。OUPUTS收件人是这样的:
Message 1 - Recipients: John, David, Steve - thread_id = 1234
Message 2 - Recipients: Bill, David, John, Ed, Steve - thread_id = 1345
基本上,我会LIK e要做的是可以选择COUNT收件人,因此在上面的示例中,“消息1”将显示三(3)个收件人,而“消息2”将显示五(5)个收件人。
这样,如果我有一个发送给30个用户的线程/消息,并不是所有的三十个名字都会被打印出来。
谢谢!
注意的GROUP_CONCAT限制,由于其返回值的长度。 – 2009-08-20 07:32:45