MySQL學習之集合查詢和基於派生表的查詢(八)

2021-10-07 15:15:06 字數 1376 閱讀 9001

資料準備:

員工表staff

一、集合查詢

集合操作主要包括並操作union、交操作intersect和差操作except。但是intersect和except無法在mysql中使用,只能在oracle中使用.

限定條件:

(1)子結果集的列數必須相同;

(2)對應項的資料型別也必須相同。

(3)子結果集要具有相同的結構。

(4)每個子結果集不能包含order by和compute子句。

1、uinion(並)

並集:返回各子結果集所有記錄組合在一起的新結果集。

eg:查詢年齡小於26或者性別是'female'的員工資訊

等同於:

注:使用uinion時,系統會自動去掉重複元組。若想保留重複元組則用uinion all操作符。 

2、mysql中利用in實現交集

交集:返回左邊結果集和右邊結果集中都有的記錄

例:查詢年齡小於26且性別是'female'的員工資訊

3、mysql中利用not in實現差集

差集:返回左邊結果集中已經有的記錄,而右邊結果集中沒有的記錄

例:查詢年齡小於26且性別不是'female'的員工資訊

4、結果集的排序

注:order by是對整個運算後的結果排序,並不是對單個資料集

例:查詢年齡小於26或者性別是'female'的員工資訊,且根據年齡降序排列。

二、基於派生表的查詢

子查詢既可以出現在where子句中,還可以出現在from子句中,這時子查詢生成的臨時派生表成為主查詢的查詢物件。

注:通過from子句生成派生表時,as關鍵字可以省略,但必須為派生關係指定乙個別名

例:查詢高於同一部門員工的平均年齡的員工資訊。

mysql 集合 MySql集合查詢

select語句的查詢結果是元組的集合,所以多個select語句的結果可進行集合操作。集合操作主要包括並操作union 交操作intersect 差操作except。注意,參加集合操作的各查詢結果的列數必須相同 對應的資料型別也必須相同。本示例中的資料表有student,sc,course三個,資料...

MySQL之集合之間的查詢

根據需求有以下查詢情況 判斷乙個元素是否在集合裡面。可用 in 判斷,要求傳入引數為集合,然後通過 collection list item i index index open close separator foreach 對集合進行整理。另乙個方法是使用 find in set 函式,這個要求...

mysql集合屬性 MySql集合查詢

select語句的查詢結果是元組的集合,所以多個select語句的結果可進行集合操作。集合操作主要包括並操作union 交操作intersect 差操作except。注意,參加集合操作的各查詢結果的列數必須相同 對應的資料型別也必須相同。本示例中的資料表有student,sc select語句的查詢...