為了配合測試,特地建了兩個表,並且新增了一些測試資料,其中重覆記錄為東吳的人物。
表: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語句 操作集合
保留小數字數 select cast 列名as 數值型別,如decimal,numeric等 長度,小數點後位數 列名 from 表名 例 select cast sid as decimal 18,2 sid from user case 用法 單條件 select case xx when nu...
MySQL查詢in操作 查詢結果按in集合順序顯示
引自 mysql 查詢in操作,查詢結果按in集合順序顯示 複製 如下 select from test where id in 3,1,5 order by find in set id,3,1,5 select from test where id in 3,1,5 order by subst...
SQL入門之集合操作
儘管可以在與資料庫互動時一次只處理一行資料,但實際上關聯式資料庫通常處理的都是資料的集合。在數學上常用的集合操作為 並 union 交 intersect 差 except 對於集合運算必須滿足下面兩個要求 sql語言中每個集合操作符包含兩種修飾 乙個包含重複項,另乙個去除了重複項 但不一定去除了所...