一开始,让我做你的查询有点更具可读性:
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