sql语句union

2024-11-03 05:22:51
推荐回答(5个)
回答1:

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

回答2:

第1种是将两个表完全不同行连起来,即在第一张表后面加了第二张表的不同行

方法2是做笛卡儿积,如表1有m行,表2有n行,则结果有m*n行的组合
且两个name字段是分两列的
因此你安方法2写,sql肯定报错,告诉你name指示不清,因为有两列都叫name分别为china_employees.name,usa_employees.name

回答3:

union 是合并行

你第二天语句 不是合并 是两个表的全集 可以输出两个表的多个列

但是你这么写 结果是一样的

回答4:

建议第一种 如果需要去重

select distinct name from
(
select distinct name from china_employees
union
select distinct name from usa_employees
)

回答5:

不一样 union相当于一个交集 输出的是两个表都有的
distinct相当于并集 但是 你第二个语句是不是有问题啊 这个语句用来多列查询的