[quote]1.交集
Inner Join, 等价于select * from a b where a.id=b.id ,*表示a.*,b.*,一笔纪录你可以取出a,b的栏位
left join 或right join 可以表示差集 ,一笔纪录你可以取出a,b的栏位
full join才是表示并集,select * from a full join b on a.id=b.id
,a.id=b.id 为一笔纪录,其他不等的纪录都可以显示,例如a的栏位和null栏位组合,或者null栏位和a组合~
另外一个cross join,如果不加上where条件,就是a的纪录和b的纪录任一组合,加入a有15笔,b有15笔,那么 a cross join b就有225笔,不会有null栏位(当然原来表有另当别论)
cross join加上where 就是inner join
select * from a crossjoin b where a.id = b.id等价于select * from a full join b on a.id=b.id
P.S. not in-->select * from a where a.id in (select b.id from b),*表示a你只可以取出a,b的栏位,not exists,也是如此,这些其实不算是交集或者差集的讨论的范围,每次只是对一个表的纪录进行选取而已,看这句select * from a where a.id not in ('1','2')这个算就不能算是差集
2.UNION表示并集,我觉得不可以完全这样讲
union 和join不一样,union这个运算子是将资料列合并,而join是将栏位合并(我前面所讲)!
如果从栏位合并来讲,full join 算是并集,inner join 算是交集!left join 或right join 不完全是差集,也包括交集的结果,具体你的语句的查询结果如何还是要看实际的语句,就如cross join,加上where就变成inner join,前后的结果相差甚远 [/quote]
网上找了一遍,发现一些新东西:
并集 :union select × from a union (all) select × from b aUb
交集: intersect select × from a intersect select × from b anb
差集: minus select × from a minus select × from b a-b
Inner Join, 等价于select * from a b where a.id=b.id ,*表示a.*,b.*,一笔纪录你可以取出a,b的栏位
left join 或right join 可以表示差集 ,一笔纪录你可以取出a,b的栏位
full join才是表示并集,select * from a full join b on a.id=b.id
,a.id=b.id 为一笔纪录,其他不等的纪录都可以显示,例如a的栏位和null栏位组合,或者null栏位和a组合~
另外一个cross join,如果不加上where条件,就是a的纪录和b的纪录任一组合,加入a有15笔,b有15笔,那么 a cross join b就有225笔,不会有null栏位(当然原来表有另当别论)
cross join加上where 就是inner join
select * from a crossjoin b where a.id = b.id等价于select * from a full join b on a.id=b.id
P.S. not in-->select * from a where a.id in (select b.id from b),*表示a你只可以取出a,b的栏位,not exists,也是如此,这些其实不算是交集或者差集的讨论的范围,每次只是对一个表的纪录进行选取而已,看这句select * from a where a.id not in ('1','2')这个算就不能算是差集
2.UNION表示并集,我觉得不可以完全这样讲
union 和join不一样,union这个运算子是将资料列合并,而join是将栏位合并(我前面所讲)!
如果从栏位合并来讲,full join 算是并集,inner join 算是交集!left join 或right join 不完全是差集,也包括交集的结果,具体你的语句的查询结果如何还是要看实际的语句,就如cross join,加上where就变成inner join,前后的结果相差甚远 [/quote]
网上找了一遍,发现一些新东西:
并集 :union select × from a union (all) select × from b aUb
交集: intersect select × from a intersect select × from b anb
差集: minus select × from a minus select × from b a-b