我正在使用以下SQL語句對來自兩個不同表的COUNT()
行。唯一的問題是payment_count
和upload_count
結果總是返回相同的值。MySQL從多個表中計數行返回完全相同的數量
如果我只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(DISTINCT p.id)'和'COUNT(DISTINCT b.id)' – 2013-04-10 18:12:46
您以「星形」模式加入表格,這是一個未定義的區域。如果其中一個表的匹配記錄比其他表中的匹配記錄多得多,那麼mysql必須通過擴展/複製較小表中的數據來填補漏洞。 – 2013-04-10 18:14:34