是的,你可以一次SUM
多列:
SELECT i.itemtype AS Item
, p.name
, SUM(CASE
WHEN itemtype = 2148 THEN i.count
ELSE 0
END) * 10 AS Count
, SUM(CASE
WHEN itemtype = 2152 THEN i.count
ELSE 0
END) * 1000 AS Count1
, SUM(CASE
WHEN itemtype = 2160 THEN i.count
ELSE 0
END) * 10000 AS Count2
FROM player_items AS i
LEFT JOIN players AS p ON i.player_id = p.id
WHERE i.itemtype IN (2148, 2152, 2160)
GROUP BY i.itemtype ASC
LIMIT 0, 30
总结这三列在一起,你可以:
SELECT t.itemType AS Item, t.Count, t.Count1, t.Count2
, SUM(t.Count1, t.Count2, t.Count3) AS Total
FROM
(
SELECT i.itemtype AS Item
, p.name
, SUM(CASE
WHEN itemtype = 2148 THEN i.count
ELSE 0
END) * 10 AS Count
, SUM(CASE
WHEN itemtype = 2152 THEN i.count
ELSE 0
END) * 1000 AS Count1
, SUM(CASE
WHEN itemtype = 2160 THEN i.count
ELSE 0
END) * 10000 AS Count2
FROM player_items AS i
LEFT JOIN players AS p ON i.player_id = p.id
WHERE i.itemtype IN (2148, 2152, 2160)
GROUP BY i.itemtype ASC
LIMIT 0, 30
) AS t
或者你可以添加另一个CASE
SELECT i.itemtype AS Item
, p.name
, SUM(CASE
WHEN itemtype = 2148 THEN i.count
ELSE 0
END) * 10 AS Count
, SUM(CASE
WHEN itemtype = 2152 THEN i.count
ELSE 0
END) * 1000 AS Count1
, SUM(CASE
WHEN itemtype = 2160 THEN i.count
ELSE 0
END) * 10000 AS Count2
, SUM(CASE
WHEN itemtype = 2148 THEN (i.count * 10)
WHEN itemtype = 2152 THEN (i.count * 1000)
WHEN itemtype = 2160 THEN (i.count * 10000)
ELSE 0
END) AS Total
FROM player_items AS i
LEFT JOIN players AS p ON i.player_id = p.id
WHERE i.itemtype IN (2148, 2152, 2160)
GROUP BY i.itemtype ASC
LIMIT 0, 30
也许你可以用一些数据澄清。查询现在返回的内容以及您想要的内容。 –
@ypercube请在你的回答中看看我的评论。希望现在清楚。 – Cyclone