新建兩個表進行測試:
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.示例:
無重復記錄:
有重復記錄:
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展示結果。
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);