sql语句union

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql语句union相关的知识,希望对你有一定的参考价值。

select name from china_employees
union
select name from usa_employees

select distinct name from china_employees,usa_employees的效果是一样的吗

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

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

方法2是做笛卡儿积,如表1有m行,表2有n行,则结果有m*n行的组合
且两个name字段是分两列的
因此你安方法2写,sql肯定报错,告诉你name指示不清,因为有两列都叫name分别为china_employees.name,usa_employees.name本回答被提问者采纳
参考技术B union 是合并行

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

但是你这么写 结果是一样的
参考技术C 建议第一种 如果需要去重

select distinct name from
(
select distinct name from china_employees
union
select distinct name from usa_employees
)
参考技术D 不一样 union相当于一个交集 输出的是两个表都有的
distinct相当于并集 但是 你第二个语句是不是有问题啊 这个语句用来多列查询的

SQL语句中:UNION与UNION ALL的区别

UNION用的比较多union all是直接连接,取到得是所有值,记录可能有重复   union 是取唯一值,记录没有重复   
1、UNION 的语法如下:
[SQL 语句 1]
UNION
[SQL 语句 2]

2、UNION ALL 的语法如下:
[SQL 语句 1]
UNION ALL
[SQL 语句 2]

效率:
UNION和UNION ALL关键字都是将两个结果集合并为一个,但这两者从使用和效率上来说都有所不同。

1、对重复结果的处理:UNION在进行表链接后会筛选掉重复的记录,Union All不会去除重复记录。

2、对排序的处理:Union将会按照字段的顺序进行排序;UNION ALL只是简单的将两个结果合并后就返回。

从效率上说,UNION ALL 要比UNION快很多,所以,如果可以确认合并的两个结果集中不包含重复数据且不需要排序时的话,那么就使用UNION ALL。


简要回答:
UNION去重且排序

UNION ALL不去重不排序
























以上是关于sql语句union的主要内容,如果未能解决你的问题,请参考以下文章

PHP封装数据库连接

练习集合运算符

SQL查询语句

sql语句加参数

sql语句时间排序 sql语句按照时间排序

带参数的sql语句!不懂