sql中union 用于合并两个或多个 SELECT 语句的结果集。
需要注意,UNION 内部的 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每条 SELECT 语句中的列的顺序必须相同。
SQL UNION 语法
SELECT column_name(s) FROM table_name1
UNION
SELECT column_name(s) FROM table_name2
以图中表格为例:
列出所有在中国和美国的不同的雇员名:
SELECT E_Name FROM Employees_China
UNION
SELECT E_Name FROM Employees_USA
结果
E_Name
Zhang, Hua
Wang, Wei
Carter, Thomas
Yang, Ming
Adams, John
Bush, George
Gates, Bill
这个命令无法列出在中国和美国的所有雇员。在上面的例子中,我们有两个名字相同的雇员,他们当中只有一个人被列出来了。UNION 命令只会选取不同的值。
如果需要显示全部值,则使用UNION all。
列出在中国和美国的所有的雇员:
SELECT E_Name FROM Employees_China
UNION ALL
SELECT E_Name FROM Employees_USA
第1种是将两个表完全不同行连起来,即在第一张表后面加了第二张表的不同行
方法2是做笛卡儿积,如表1有m行,表2有n行,则结果有m*n行的组合
且两个name字段是分两列的
因此你安方法2写,sql肯定报错,告诉你name指示不清,因为有两列都叫name分别为china_employees.name,usa_employees.name
union 是合并行
你第二天语句 不是合并 是两个表的全集 可以输出两个表的多个列
但是你这么写 结果是一样的
建议第一种 如果需要去重
select distinct name from
(
select distinct name from china_employees
union
select distinct name from usa_employees
)
不一样 union相当于一个交集 输出的是两个表都有的
distinct相当于并集 但是 你第二个语句是不是有问题啊 这个语句用来多列查询的