日期:2014-05-17  浏览次数:20642 次

full jion 和 union 的详细区别
感觉 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 all
select 2,5 union all
select 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 all
select 3,6 union all
select 4,7
--------------开始查询--------------------------

select * from [a] full join b on a.a=b.a


select * from a
union all
select * from b
----------------结果----------------------------
/* 
a    b    a    b
1    4    NULL    NULL
2    5    2    5
3    6    3    6
NULL    NULL    4    7

a    b
1    4
2    5
3    6
2    5
3    6
4    7
*/

------解决方案--------------------
探讨
union:行集合并
full join:列合并,两张表的数据会全部出来(不管满不满足条件)

------解决方案--------------------
union会重复的值删除
full join不删除重复值

------解决方案--------------------
union all 不会干掉重复记录,只有union才会干掉。
------解决方案--------------------
探讨
当然结果不同了
union会把table本身重复的也干掉
full join不会

------解决方案--------------------
探讨
最通俗的说法就~一个为合并列~一个行集合并