日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

SQL 交集 差集 并集 笛卡尔积 应用实例

發布時間:2025/7/25 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SQL 交集 差集 并集 笛卡尔积 应用实例 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、?交集 Join???

1、inner join 其處理結果與等值/自然連接相同??

mssql :??????

-- mssql 中 inner join 連接需要 on Connection條件 否則會報錯, mysql 不會,其結果等于cross join select * from Major m inner JOIN dbo.DepNmOrSubjectNm d on m.DepNoOrSubjectNo =d.DepNoOrSubjectNo mysql: -- 其結果等于 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.DepNoOrSubjectNo

mysql:

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.DepNoOrSubjectNo

mysql:????

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 null

mysql:????
注:mysql 5.0版本還不支持 full join ,但可以采用 join + union方法實現,詳細可以參考:????
http://www.xaprb.com/blog/2006/05/26/how-to-write-full-outer-join-in-mysql/????

--全連接 == 一個左連接 + 一個右連接 + union(去掉相同行) --a select * from Major m left outer join `department` d on m.dptId = d.dptId union select * from Major m right outer join `department` d on m.dptId = d.dptId --b select * from Major m left outer join `department` d on m.dptId = d.dptId union all select * from Major m right outer join `department` d on m.dptId = d.dptId where m.dptId is null --大力提倡使用b,尤其是在處理很大的記錄集時, union all 不會進行排序及消除相同的行(消除相同的行可能通過第二個join的條件進行實現),所以可以節省不少時間.

二、差集 (not in)????

select * from Major m where m.dptId not in(select dptId from department )

差集中, mysql 與 mssql 語句可以直接采用 not in 來實現????

三.、并集 union

mssql:????

-- union 并, 默認取消相同 行 select * from Major m union select * from Major tm -- union full 會有重復記錄 select * from Major m union all select * from Major tm

mysql:

-- 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.DepNmOrSubjectNm

mysql:????

-- 笛卡爾集 select * from Major m cross join `department` d;

帶條件的笛卡爾積與等值連接功能相同

轉載于:https://www.cnblogs.com/szytwo/archive/2012/09/21/2697454.html

總結

以上是生活随笔為你收集整理的SQL 交集 差集 并集 笛卡尔积 应用实例的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。