UNION 与 UNION ALL

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 运算符合并的所有查询必须在其目标列表中有相同数目的表达式。
Previous:
Next:

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注