SQL查詢:並集、差集、交集


新建兩個表進行測試:
test_a

ID name
1 曹操
2 郭嘉
3 孫權
4 周瑜

test_b

ID name
1 劉備
2 關羽
3 張飛
4 孫權
5 周瑜

1.UNION形成並集

  UNION可以對兩個或多個結果集進行連接,形成“並集”。
  子結果集所有的記錄組合在一起形成新的結果集。

1、限定條件

  要是用UNION來連接結果集,有4個限定條件。
  (1)、子結果集要具有相同的結構。
  (2)、字結果集的列數必須相同。
  (3)、子結果集對應的數據類型必須可以兼容。
  (4)、每個子結果集不能包含order by和compute子句。

2、語法形式
SELECT column_name(s) FROM table1
UNION
SELECT column_name(s) FROM table2;
3.示例:

  無重復記錄:
Union形成並集-無重復記錄
  有重復記錄:
Union形成並集-重復記錄

2.EXCEPT形成差集

  EXCEPT可以對兩個或多個結果集進行連接,形成“差集”。
  返回左邊結果集合中已經有的記錄,而右邊結果集中沒有的記錄。

1、限定條件

  要是用EXCEPT來連接結果集,有4個限定條件。
  (1)、子結果集要具有相同的結構。
  (2)、字結果集的列數必須相同。
  (3)、子結果集對應的數據類型必須可以兼容。
  (4)、每個子結果集不能包含order by和compute子句。

2、語法形式
SELECT column_name(s) FROM table1
EXCEPT
SELECT column_name(s) FROM table2;

  博主的MySQL版本不支持EXCEPT,暫用NOT IN展示結果。
NOT IN

3.INNER JOIN形成交集

  INNER JOIN可以對兩個或多個結果集進行連接,形成“交集”。
  返回左邊結果集和右邊結果集中都有的記錄。

1、限定條件

  要是用INNER JOIN來連接結果集,有4個限定條件。
  (1)、子結果集要具有相同的結構。
  (2)、字結果集的列數必須相同。
  (3)、子結果集對應的數據類型必須可以兼容。
  (4)、每個子結果集不能包含order by和compute子句。

2、語法形式
SELECT column_name(s) FROM table1
INNER JOIN table2
ON table2.column_name(s) = table1.column_name(s);

SELECT column_name(s) FROM table1
JOIN table2
ON table2.column_name(s) = table1.column_name(s);

INNER JOIN


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM