我目前有一個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