大家好,
我只是想知道以下是否可行。
假设我有这张桌子
+---------+-------+
| item_id | price |
+---------+-------+
| 14 | 1500 |
| 74 | 1500 |
| 78 | 2500 |
+---------+-------+
我想选择此阵列中的所有item_id (14,78,14) ....
我以为我可以用这个选择得到所有价格的总和:
mysql> select SUM(price) from items_db where item_id in (14,78,14);
+-------+
| price |
+-------+
| 4000 |
+-------+
1 row in set (0.00 sec)
但显然它只是跳过了重复的item_id的价格。
那么我有什么办法让这项工作成功吗?
提前致谢, 亚历
答案 0 :(得分:0)
你做不到。您需要收到split the values,将它们插入临时表,然后与包含您想要求和的值的表进行连接。
选择然后使用您熟悉的语言对其进行后处理会不容易?
答案 1 :(得分:0)
好吧得到它......如果你在IN(...)中列出重复项,那就不行了。 在每一行,数据库引擎检查行是否匹配IN(...)列表。 所以在这样的陈述中不会两次读取行
多次读取给定行的一种方法是通过连接...如果要通过SQL执行此类sum(),则必须加入中间(临时)表。类似的东西:
create temporary table itemlist (item_id);
insert into itemlist values (14),(78),(14);
select sum(price) from items_db inner join itemlist using (item_id);
+------------+
| sum(price) |
+------------+
| 5500 |
+------------+