我正在使用以下 SQL 语句来处理COUNT()
来自两个不同表的行。唯一的问题是payment_count
andupload_count
结果总是返回相同的值。
如果我只COUNT()
从payments
表中计数,那么计数是准确的,只有当我在同一语句中从两个表中计数时,两者的COUNT()
for 才会变得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