Den*_*nis 3 sql-server group-by
无法理解GROUP BY
子句的奇怪行为:
SELECT id, SUM(num) as sum
FROM (
SELECT 1 AS id, 2 AS num UNION
SELECT 1, 3) AS a
GROUP BY id
Run Code Online (Sandbox Code Playgroud)
结果是:
SELECT id, SUM(num) as sum
FROM (
SELECT 1 AS id, 2 AS num UNION
SELECT 1, 3) AS a
GROUP BY id
Run Code Online (Sandbox Code Playgroud)
但
SELECT id, SUM(num) as sum
FROM (
SELECT 1 AS id, 2 AS num UNION
SELECT 1, 2 /*!*/) AS a
GROUP BY id
Run Code Online (Sandbox Code Playgroud)
结果是:
id | sum |
----|-----|
1 | 5 |
Run Code Online (Sandbox Code Playgroud)
Low*_*n M 11
UNION
排除重复行。
你想UNION ALL
在这个例子中使用:
SELECT id, SUM(num) as sum
FROM (
SELECT 1 AS id, 2 AS num UNION ALL
SELECT 1, 2 /*!*/) AS a
GROUP BY id
Run Code Online (Sandbox Code Playgroud)
结果:
id sum
----------- -----------
1 4
Run Code Online (Sandbox Code Playgroud)