A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

sql 中 union在什么情况下使用,需要注意什么
来自:黑马程序员训练营论坛 Android客户端来自: Android客户端

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

10 个回复

倒序浏览
union:使用union就是将两个表的结果合并在一起显示,在使用的时候一定要注意两个表的要查询的字段的个数要相同,不然就会报错的,

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
UNION 指令的目的是将两个 SQL 语句的结果合并起来。从这个角度来看, UNION 跟 JOIN 有些许类似,因为这两个指令都可以由多个表格中撷取资料。 UNION 的一个限制是两个 SQL 语句所产生的栏位需要是同样的资料种类。另外,当我们用 UNION这个指令时,我们只会看到不同的资料值 (类似 SELECT DISTINCT)。

UNION 的语法如下:

[SQL 语句 1]
UNION
[SQL 语句 2]

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
Union是将两个或多个结果集合并在一起,使用的时候几个结果集的字段数目和类型一定要相同,否则就会报错

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
个人感觉,union只是将几条SQL语句的结果放在一起显示出来,比如在做报表的时候,有可能要将几个不同的表中的数据放一块显示;
而jion on 则是侧重于几个表的关联,同过关联两个表,可以将它们中各自的字段值拿出来进行比较,这个比较就可以作为一个查询条件,例如:
T_Student和T_Score两个表中都有name字段,我们可以通过这条语句来选择输出结果:
select   t.*   from   T_score  t  jion  T_student  d  on  t.name=d.name    where   d.name='***';


评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
union 操作符用于合并两个或者多个select语句的结果集。
需要注意的是,union内部的select语句必须要有相同数量的列,列也必须拥有相似的数据类型,而且,每条select语句中列的顺序也要相同。

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
用作简单的结果联合:
select FNumber,FName,FAge, from T_EMployee
union
select FIdcard,FName,FAge, from T_EMployee
基本原则:每个结果集必须有相同的列数,每个结果集的列必须类型相容(同)
union all
union 会合并两个查询结果集,并且将其中完全重复的数据合并为一条。
union因为要进行重复值扫描,所以效率低,因此如果不是确定合并重复行,那么就用union all。

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
SQL 中的 UNION 与 UNION ALL 不同,UNION 会去掉结果集中的重复记录,而 UNION ALL 会返回合并后的全部结果集。这个我是知道的,但今天使用 UNION 时,还是犯了一个错误:UNION 会去掉结果集中的重复记录,并且不区分这些记录是那个表里的。比如下面的两个结果集使用 UNION 合并,结果会是什么呢?-- 表 testa11234-- 表testb23567我以为结果集会是这个:11234567因为把表 testb 中与 testa 重复的记录去掉了。而实际测试结果不是这样的:SQL select * from testa; A---------- 1 2 3 4 1SQL select * from testb; A---------- 2 3 5 6 7SQL select a from testa 2 union 3 select a from testb; A---------- 1 2 3 4 5 6 7已选择7行。UNION 操作也会去掉表 testa 中重复的记录。总之,UNION 最后的返回结果集是去掉了所有的重复记录,而不区分是哪个表里的记录的。做报表,这是很容易出错的一点。

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
union用于联合查询,查询时不显示重复的纪录,UNION ALL查询时显示重复纪录,使用union时注意两个表的字段数相同
回复 使用道具 举报
union用于联合查询,查询时不显示重复的纪录,UNION ALL查询时显示重复纪录,使用union时注意两个表的字段数相同
回复 使用道具 举报
union用于联合查询,查询时不显示重复的纪录,UNION ALL查询时显示重复纪录,使用union时注意两个表的字段数相同
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马