gpt4 book ai didi

php - MySQL Select - 将 COUNT 与 GROUP_CONCAT 组合

转载 作者:行者123 更新时间:2023-11-29 09:22:33 24 4
gpt4 key购买 nike

我目前有一个 MySQL SELECT 语句,它从两个表中提取信息以显示私有(private)消息的“已发送消息”字段。

我想知道如何在查询中添加 COUNT 来计算一个线程中“接收者”的数量。

这是我的表结构的基本要点,(注意:两个表之间的关系是 pm-info 中的“message-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

它会输出这样的收件人:

Message 1 - Recipients: John, David, Steve - thread_id = 1234
Message 2 - Recipients: Bill, David, John, Ed, Steve - thread_id = 1345

基本上,我想做的是可以选择计算收件人数量,因此在上面的示例中,“消息 1”将显示三 (3) 个收件人,“消息 2”将显示五 (5) 个收件人收件人。

这样,如果我有一个线程/消息发送给 30 个用户,则不会打印出所有 30 个名称。

谢谢!

最佳答案

您是否尝试过将 GROUP_CONCAT 替换为 COUNT?像这样:

COUNT(DISTINCT receiver.usrFirst) as receiver_count

或者更好的是,使用 pm_info.receiver_id (这可能会让您消除其中一个连接):

COUNT(DISTINCT pm_info.receiver_id) as receiver_count

关于php - MySQL Select - 将 COUNT 与 GROUP_CONCAT 组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1210872/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com