mysql -unable来生成具有相同id的条目的总和

时间:2014-08-01 14:00:30

标签: mysql

大家好,

我只是想知道以下是否可行。

假设我有这张桌子

+---------+-------+
| 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的价格。

那么我有什么办法让这项工作成功吗?

提前致谢, 亚历

2 个答案:

答案 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 |
+------------+