我希望我能写出这样的东西:
SELECT sum(weight) FROM items WHERE itemID IN (4217,4575,6549,4217)
其中itemID
是主键,SQLite和MySQL会按预期处理它,即将第4217行添加到总和两次,但它们没有。
至少在MySQL中有什么东西我不知道这是针对这样的情况吗?如果没有,解决方法是什么样的?任何行都可以在列表中包含任意数量的重复项。虽然在大多数情况下很小,但列表可能很大。
答案 0 :(得分:1)
我不知道任何可以做到这一点的开箱即用功能。这是workaroud。您可以将这些值插入临时表并使用连接:
CREATE TEMPORARY TABLE List(ID INT);
INSERT INTO List(ID) VALUES(4217),(4575),(6549),(4217);
SELECT SUM(i.weight)
FROM items i
JOIN List l ON i.itemID = l.ID;