SQL 交集 差集 并集 笛卡尔积 应用实例
一、?交集 Join???
1、inner join 其處理結(jié)果與等值/自然連接相同??
mssql :??????
-- mssql 中 inner join 連接需要 on Connection條件 否則會報錯, mysql 不會,其結(jié)果等于cross join select * from Major m inner JOIN dbo.DepNmOrSubjectNm d on m.DepNoOrSubjectNo =d.DepNoOrSubjectNo mysql: -- 其結(jié)果等于 crose join select * from Major m inner join Department d ; -- 等值連接 select m.*,d.* from Major m inner join Department d on m.dptId = d.dptId;2、 left join /left outer join 左連接/左外連接????
注:在sql 中, left join 為 left outer join 的縮寫????
mssql:
select * from Major m left outer JOIN dbo.DepNmOrSubjectNm d on m.DepNoOrSubjectNo =d.DepNoOrSubjectNomysql:
select * from Major m left join `department` d on m.dptId = d.dptId;3、 right join/right outer join 右連接/右外連接???
mssql:????
select * from Major m right outer JOIN dbo.DepNmOrSubjectNm d on m.DepNoOrSubjectNo =d.DepNoOrSubjectNomysql:????
select * from Major m right outer join `department` d on m.dptId = d.dptId;4、full join 全連接
mssql:
--a select * from Major m FULL OUTER JOIN dbo.DepNmOrSubjectNm d on m.DepNoOrSubjectNo =d.DepNoOrSubjectNo --b select * from Major m left outer JOIN dbo.DepNmOrSubjectNm d on m.DepNoOrSubjectNo =d.DepNoOrSubjectNo union select * from Major m right outer JOIN dbo.DepNmOrSubjectNm d on m.DepNoOrSubjectNo =d.DepNoOrSubjectNo --c select * from Major m left outer JOIN dbo.DepNmOrSubjectNm d on m.DepNoOrSubjectNo =d.DepNoOrSubjectNo union all select * from Major m right outer JOIN dbo.DepNmOrSubjectNm d on m.DepNoOrSubjectNo =d.DepNoOrSubjectNo where m.DepNoOrSubjectNo is nullmysql:????
注:mysql 5.0版本還不支持 full join ,但可以采用 join + union方法實現(xiàn),詳細可以參考:????
http://www.xaprb.com/blog/2006/05/26/how-to-write-full-outer-join-in-mysql/????
二、差集 (not in)????
select * from Major m where m.dptId not in(select dptId from department )差集中, mysql 與 mssql 語句可以直接采用 not in 來實現(xiàn)????
三.、并集 union
mssql:????
-- union 并, 默認取消相同 行 select * from Major m union select * from Major tm -- union full 會有重復記錄 select * from Major m union all select * from Major tmmysql:
-- union 默認會取消重復選項 select * from Major `major` union select * from Major mj ; -- union all 不會取消重復選項 select * from Major m union all select * from Major tm四、 笛卡爾積????
?mssql:????
-- 笛卡爾積 select * from Major cross join dbo.DepNmOrSubjectNmmysql:????
-- 笛卡爾集 select * from Major m cross join `department` d;帶條件的笛卡爾積與等值連接功能相同
轉(zhuǎn)載于:https://www.cnblogs.com/szytwo/archive/2012/09/21/2697454.html
總結(jié)
以上是生活随笔為你收集整理的SQL 交集 差集 并集 笛卡尔积 应用实例的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: hdu 4289 Control
- 下一篇: JavaBean的保存范围与javaBe