黑马程序员技术交流社区

标题: sql 中 union在什么情况下使用,需要注意什么 [打印本页]

作者: 李帅    时间: 2012-8-4 13:28
标题: sql 中 union在什么情况下使用,需要注意什么
sql 中 union在什么情况下使用,需要注意什么
来自:黑马程序员训练营论坛 Android客户端
作者: 蔡尚猛    时间: 2012-8-4 14:09
union:使用union就是将两个表的结果合并在一起显示,在使用的时候一定要注意两个表的要查询的字段的个数要相同,不然就会报错的,
作者: 韩爽    时间: 2012-8-4 14:13
UNION 指令的目的是将两个 SQL 语句的结果合并起来。从这个角度来看, UNION 跟 JOIN 有些许类似,因为这两个指令都可以由多个表格中撷取资料。 UNION 的一个限制是两个 SQL 语句所产生的栏位需要是同样的资料种类。另外,当我们用 UNION这个指令时,我们只会看到不同的资料值 (类似 SELECT DISTINCT)。

UNION 的语法如下:

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


作者: 肖攀    时间: 2012-8-4 14:18
Union是将两个或多个结果集合并在一起,使用的时候几个结果集的字段数目和类型一定要相同,否则就会报错
作者: 梁健1    时间: 2012-8-4 16:46
个人感觉,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='***';



作者: 董蒙蒙    时间: 2012-8-4 17:37
union 操作符用于合并两个或者多个select语句的结果集。
需要注意的是,union内部的select语句必须要有相同数量的列,列也必须拥有相似的数据类型,而且,每条select语句中列的顺序也要相同。
作者: 郭张浩    时间: 2012-8-5 16:15
用作简单的结果联合:
select FNumber,FName,FAge, from T_EMployee
union
select FIdcard,FName,FAge, from T_EMployee
基本原则:每个结果集必须有相同的列数,每个结果集的列必须类型相容(同)
union all
union 会合并两个查询结果集,并且将其中完全重复的数据合并为一条。
union因为要进行重复值扫描,所以效率低,因此如果不是确定合并重复行,那么就用union all。
作者: 梁永斌    时间: 2012-8-7 14:05
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 最后的返回结果集是去掉了所有的重复记录,而不区分是哪个表里的记录的。做报表,这是很容易出错的一点。
作者: 李延辉    时间: 2012-8-9 19:52
union用于联合查询,查询时不显示重复的纪录,UNION ALL查询时显示重复纪录,使用union时注意两个表的字段数相同
作者: 李延辉    时间: 2012-8-9 19:53
union用于联合查询,查询时不显示重复的纪录,UNION ALL查询时显示重复纪录,使用union时注意两个表的字段数相同
作者: 李延辉    时间: 2012-8-9 19:53
union用于联合查询,查询时不显示重复的纪录,UNION ALL查询时显示重复纪录,使用union时注意两个表的字段数相同




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2