一開始,讓我做你的查詢有點更具可讀性:
SELECT SUM(it.count)
FROM characters ch
LEFT OUTER JOIN items it ON ch.charId=it.owner_id
WHERE item_id=40001
ORDER BY SUM(it.count) DESC
LIMIT 20
這個查詢有點怪。首先你選擇一個總和(你不是按任何東西分組),那麼你就是通過這個總和來訂購,並將返回的行數限制爲?
此外,你在做一個LEFT OUTER JOIN
,但隨後使用WHERE
表中的外表,這將導致所有行被刪除,只有一個字符,但沒有項目。
下面的查詢將完成同樣的事情。
SELECT SUM(it.count)
FROM characters ch
JOIN items it ON ch.charId=it.owner_id
WHERE item_id=40001
現在如果你想超過一個ITEM_ID,你要麼需要兩者的總數:
SELECT SUM(it.count)
FROM characters ch
JOIN items it ON ch.charId=it.owner_id
WHERE item_id IN (40001,40002)
或者你想爲每個項目總和
SELECT SUM(it.count)
FROM characters ch
JOIN items it ON ch.charId=it.owner_id
GROUP BY item_id
ORDER BY SUM(it.count) DESC
LIMIT 20
你可以改變加入只做幾個項目類型:
SELECT SUM(it.count)
FROM characters ch
JOIN items it ON ch.charId=it.owner_id AND it.item_id IN (40001,40002)
GROUP BY item_id
ORDER BY SUM(it.count) DESC
LIMIT 20
是否與Java或JavaScript(完全不同的語言)有什麼關係? – RobG