日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

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

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

一、?交集 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.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方法實現(xiàn),詳細可以參考:????
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的條件進行實現(xiàn)),所以可以節(jié)省不少時間.

二、差集 (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 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;

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

轉(zhuǎn)載于:https://www.cnblogs.com/szytwo/archive/2012/09/21/2697454.html

總結(jié)

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

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。