我使用以下 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/