我有以下表格:MySQL的:IF与SUM
Unique | Common | Score
1 | 1 | 10
2 | 1 | 10
3 | 1 | 10
4 | 1 | -10
如果我运行此:
SELECT
SUM(`score`) AS `total`
FROM
`test`
GROUP BY
`common`
我得到总:
20
这是什么我期望。
我想将负数视为零,并总计剩余分数以获得总数。所以,如果我运行此:
SELECT
IF(`score`<0, 0, SUM(`score`)) AS `total`
FROM
`myTable`
GROUP BY
`unique`
我得到这些总数:
10
10
10
0
这是我所期待的好。
但是,如果我运行此:
SELECT
IF(`score`<0, 0, SUM(`score`)) AS `total`
FROM
`myTable`
GROUP BY
`common`
我一共拿到:
20
为什么我得到的20,而不是30进行最后的查询时?唯一的区别是分组。
BTW,除去最后的查询superflous Group by
条款也给出了20
在此先感谢的结果。
因为它做的10 + 10 + 10 +( - 10),这是20。 – 2012-03-21 12:31:26