gpt4 book ai didi

MySQL 对多个表中的行进行计数,返回完全相同的数量

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

我使用以下 SQL 语句来获取两个不同表中的 COUNT() 行。唯一的问题是 payment_count upload_count 结果始终返回相同的值。

如果我仅从 payments 表中进行 COUNT() 计算,那么计数是准确的,只有当我从同一个语句中的两个表中进行计数时,两者的 COUNT() 都与 upload_count 相同。希望这是有道理的,我该如何做到这一点,以便计数是单独的?

SELECT 
u.id,
u.name,
COUNT(p.id) as payment_count,
COUNT(b.id) as upload_count
FROM users as u
INNER JOIN payments as p
ON u.id = p.user_id
LEFT OUTER JOIN orders as o
ON u.id = o.user_id
AND o.order_status = 1
LEFT OUTER JOIN uploads as b
ON u.id = b.user_id
WHERE u.package != 1
AND o.id IS NULL
GROUP BY u.id
HAVING COUNT(p.id) >= 6
ORDER BY RAND()
LIMIT 10

最佳答案

COUNT() 将计算它遇到的每个非 NULL 值。它不关心该值是否不同。 COUNT(DISTINCT fieldname) 对不同值进行计数。如果您想计算唯一值,请使用 COUNT DISTINCT。

关于MySQL 对多个表中的行进行计数,返回完全相同的数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15933227/

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