UNION 与 UNION ALL
UNION ALL 不去掉重复的记录;UNION 去掉重复的记录。
两条 SELECT 查出来的字段必须一样。这里说的“一样”是指字段类型和数量一致,与列名无关,而且类型要一一对应、数量也要相等。
比如下面是可以的:
SELECT lx FROM [Money]
union all
SELECT id FROM [Money]Code language: CSS (css)
因为 lx 和 id 都是 int 类型。
但是如果是下面这样就不行,比如换成:
SELECT lx FROM [Money]
union all
SELECT name FROM [Money]Code language: CSS (css)
就会报错:
消息 245,级别 16,状态 1,第 1 行
在将 nvarchar 值 '张三' 转换成数据类型 int 时失败。Code language: JavaScript (javascript)
如果是数量不一致也不行:
SELECT lx, name FROM [Money]
union all
SELECT id FROM [Money]Code language: CSS (css)
报错如下:
消息 205,级别 16,状态 1,第 1 行
使用 UNION、INTERSECT 或 EXCEPT 运算符合并的所有查询必须在其目标列表中有相同数目的表达式。