如何在单个查询中编写具有不同条件的两个不同的求和查询?

时间:2014-11-04 06:31:43

标签: mysql aggregate-functions

我有一个MySQL数据表items,如下所示:

+----+-------+----------+----------+
| id | value | discount |   type   |
+----+-------+----------+----------+
|  1 |    20 |        1 | hardware |
|  2 |    40 |        0 | hardware |
|  3 |    60 |        1 | software |
|  4 |    30 |        1 | software |
+----+-------+----------+----------+

discount为1时,这意味着有效value为零。

我想取回以下结果

+----------+----+
| software |  0 |
| hardware | 40 |
+----------+----+

我知道如何在多个查询中执行此操作。

SELECT type, SUM(value) from items where discount != 1 group by type

给了我

+----------+----+
| hardware | 40 |
+----------+----+

然后

SELECT type, 0 from items where discount = 1 group by type

给了我

+----------+----+
| software |  0 |
| hardware |  0 |
+----------+----+

然后我需要加入这两个表来获得最终结果。

我的问题是:

有一种方法可以用1个查询来完成相同的结果吗?

谢谢。

1 个答案:

答案 0 :(得分:2)

我认为这就是你想要的

SELECT type, SUM(if(discount =1, 0,value)) from items group by type