作者: 肖攀 时间: 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时注意两个表的字段数相同