感觉 FULL JOIN 和 UNION 除了使用条件不同(UNION 要求使用的2个表字段相同),返回的结果格式不同(FULL JOIN 不会把相同的字段值合并到一个字段内),其他还有什么区别吗,(一直感觉如果在字段相同的情况下,结果的格式简单处理下后,这两个语句返回的结果是一样的。),想看下大家对这个有什么理解,和更多的不同之处,尽量详细一点,谢谢。
------解决方案--------------------
当然结果不同了
union会把table本身重复的也干掉
full join不会
------解决方案--------------------
最通俗的说法就~一个为合并列~一个行集合并
------解决方案--------------------
union:行集合并
full join:列合并,两张表的数据会全部出来(不管满不满足条件)
------解决方案--------------------
- SQL code
------------------------------ Author :fredrickhu(小F,向高手学习)-- Date :2011-04-06 09:47:40-- Verstion:-- Microsoft SQL Server 2008 (RTM) - 10.0.1600.22 (Intel X86) -- Jul 9 2008 14:43:34 -- Copyright (c) 1988-2008 Microsoft Corporation-- Enterprise Edition on Windows NT 5.1 <X86> (Build 2600: Service Pack 3)--------------------------------> 测试数据:[a]if object_id('[a]') is not null drop table [a]go create table [a]([a] int,[b] int)insert [a]select 1,4 union allselect 2,5 union allselect 3,6--> 测试数据:[b]if object_id('[b]') is not null drop table [b]go create table [b]([a] int,[b] int)insert [b]select 2,5 union allselect 3,6 union allselect 4,7--------------开始查询--------------------------select * from [a] full join b on a.a=b.aselect * from aunion allselect * from b----------------结果----------------------------/* a b a b1 4 NULL NULL2 5 2 53 6 3 6NULL NULL 4 7a b1 42 53 62 53 64 7*/
------解决方案--------------------
------解决方案--------------------
union会重复的值删除
full join不删除重复值
------解决方案--------------------
union all 不会干掉重复记录,只有union才会干掉。
------解决方案--------------------
------解决方案--------------------