GROUP BY
我的陈述有问题。
我有一张桌子测试:
我想执行以下选择语句:
select sum(a)
from TEST
group by a+b
结果如下:
SUM(A)
3
1
3
它有效,但我不知道为什么。a+b 对GROUP BY
语句的作用是什么?
谢谢。
//编辑,对不起那个巨大的图像。我会改变它
试试这个…… SELECT 2 + NULL
看看你会得到什么。
答案不是2
,是NULL
。
因此,使用您的示例数据...
A | B | A+B
-----+-----+-----
1 | 0 | 1
2 | NULL| NULL
3 | 2 | 5
1 | NULL| NULL
NULL| 2 | NULL
A
where A+B
is
的总和是NULL
…… where is的总和是…… where is
的总和是……3
A
A+B
1
1
A
A+B
5
3
您可以使用COALESCE(a, 0) + COALESCE(b, 0)
如果你想知道什么是你可以给它选择表达式 itslef
select a+b,sum(a) from TEST group by a+b
与任何值和 null 相加时为 null。
这应该有助于您理解。
select a,a+b from test11;
+------+------+------+
| a | b | a+b |
+------+------+------+
| 1 | 2 | 3 |
| 2 | 2 | 4 |
| 2 | 3 | 5 |
| 4 | 3 | 7 |
| 3 | 4 | 7 |
| 0 | 7 | 7 |
+------+------+------+
DB 将创建包含 (a+b) 的添加 col 的临时表,然后在该 col 上执行 group by。