sql 操作結果集 -並集、差集、交集、結果集排序
為了配合測試,特地建了兩個表,並且新增了一些測試資料,其中重覆記錄為東吳的人物。
表:person_1魏國人物
表:person_2蜀國人物
a、union形成並集
union可以對兩個或多個結果集進行連線,形成「並集」。子結果集所有的記錄組合在一起形成新的結果集。
1、限定條件
要是用union來連線結果集,有4個限定條件。
(1)、子結果集要具有相同的結構。
(2)、字結果集的列數必須相同。
(3)、子結果集對應的資料型別必須可以相容。
(4)、每個子結果集不能包含order by和compute子句。
2、語法形式
select_statement unionall代表最終的結果集中將包含所有的行,而不能刪除重複行。[all
] select_statement
示例:
select name from生成的結果為:person_1
union
select name from person_2
注意到重覆記錄,孫權與周瑜僅僅顯示了乙個。下面來將union替換成union all看看是什麼結果:
select name from注意到重覆記錄,孫權與周瑜出現了兩次,這就是union all 與 union的不同之處。person_1
union
allselect name from person_2
b、except形成差集
except可以對兩個或多個結果集進行連線,形成「差集」。返回左邊結果集合中已經有的記錄,而右邊結果集中沒有的記錄。
限定條件:
1、子結果集要具有相同的結構。
2、子結果集的列數必須相同。
3、子結果集對應的資料型別必須可以相容。
4、每個子結果集不能包含order by 和 compute子句。
語法形式:
select_statement except select_statement自動刪除重複行。
示例:
select name from結果:person_1
except
select name from person_2
留意到表person_2有的,孫權周瑜已被去除。
c、intersect形成交集
intersect可以對兩個或多個結果集進行連線,形成「交集」。返回左邊結果集和右邊結果集中都有的記錄。
1、限定條件
要是用except來連線結果集,有4個限定條件。
(1)、子結果集要具有相同的結構。
(2)、子結果集的列數必須相同。
(3)、子結果集對應的資料型別必須可以相容。
(4)、每個子結果集不能包含order by或compute子句。
2、語法形式
select_statement intersect select_statement示例:
select name from返回的結果如下:person_1
intersect
select name from person_2
留意到只取兩張表都有的記錄(周瑜,孫權),這就是所謂的交集。
d、結果集的排序
select name from這裡只有兩點要注意person_1
intersect
select name from
person_2
order
by name desc --此處的欄位名相同了,如果不同,請切記排序列名,只能夠是第乙個表的列名
1.order by是對整個運算後的結果排序,並不是對單個資料集。
2.order by後面排序的欄位名稱是第乙個資料集的欄位名或者別名。
SQL 操作結果集 並集 差集 交集 結果集排序
為了配合測試,特地建了兩個表,並且新增了一些測試資料,其中重覆記錄為東吳的人物。表 person 1魏國人物 表 person 2蜀國人物 a union形成並集 union可以對兩個或多個結果集進行連線,形成 並集 子結果集所有的記錄組合在一起形成新的結果集。1 限定條件 要是用union來連線結...
SQL 操作結果集 並集 差集 交集 結果集排序
為了配合測試,特地建了兩個表,並且新增了一些測試資料,其中重覆記錄為東吳的人物。表 person 1魏國人物 表 person 2蜀國人物 a union形成並集 union可以對兩個或多個結果集進行連線,形成 並集 子結果集所有的記錄組合在一起形成新的結果集。1 限定條件 要是用union來連線結...
SQL 操作結果集 並集 差集 交集 結果集排序
為了配合測試,特地建了兩個表,並且新增了一些測試資料,其中重覆記錄為東吳的人物。表 person 1魏國人物 表 person 2蜀國人物 a union形成並集 union可以對兩個或多個結果集進行連線,形成 並集 子結果集所有的記錄組合在一起形成新的結果集。1 限定條件 要是用union來連線結...