MySQL 子查詢和組合查詢

2022-03-08 22:55:09 字數 2064 閱讀 2952

禁止碼迷,布布扣,豌豆**,碼農教程,愛碼網等第三方爬蟲**爬取!

目錄組合查詢

參考資料

所謂子查詢,其實就是對檢索的結果進行檢索,也就是一種查詢的巢狀,即我在查詢到的資料中再次查詢想要的資料。

因為子查詢是對檢索的結果進行檢索,可以理解為限定條件的查詢,那麼子查詢應當有過濾功能。

這段**發生了什麼?可以被拆分為 2 步:

當然子查詢是可以一直巢狀的,不僅侷限於 2 層而已。

可以利用計算欄位的構造實現子查詢,即將查詢的結果作為乙個新的字段進行操作。

這個時候的子查詢會因為檢索出來的行數而重複執行多次,也就是每檢索一次就使用一次子查詢。

前面我們討論過乙個檢索中使用多個 select 語句的檢索方式,也就是子查詢,子查詢中 select 是一種巢狀關係。現在看看組合查詢,所謂組合查詢就是執行多個 select,然後將這些查詢結果進行合併,最後返回乙個結果。組合查詢有 2 種比較常見的用法,一種是對單個表進行了多次查詢,一種是單個查詢中操作了不同的表,對此可以進行合併。

要建立組合查詢就需要使用union操作符來實現,用這個操作符可以合併幾個 select 返回的結果。語法框架為:

select expression1, expression2, ... expression_n

from tables

[where conditions]

union [all | distinct]

select expression1, expression2, ... expression_n

from tables

[where conditions];

union 操作符有以下注意事項:

必須有不小於 2 個的 select 才能使用 union 操作符;

被組合的 select 必須擁有相同的列、表示式、聚集函式;

列與列之間的資料型別需要時相容的。

union 操作符使用方式是放在需要組合的 select 的中間,例如:

這個結果就是從以下 2 個結果組合的:

不過,其實這個也可以用 where 來過濾,也能起到相同的效果。具體使用哪種寫法,還要具體問題具體分析。

union 操作符返回的是去重後的資料,如果我不希望去重的話可以為 union 指定乙個 all 引數即可。

對組合查詢的結果當然可以排序,不過對被組合的每個 select 進行排序是沒有意義的,一組合就又亂序了。因此在組合查詢時只能有 1 個 order by,位於最後一行表示對分組查詢的整體結果進行排序。

《mysql crash course》[英] ben forta 著,劉曉霞 鍾鳴 譯,人民郵電出版社

菜鳥教程——mysql 教程

mysql 組合查詢 mysql組合查詢

使用union 多數sql查詢都只包含乙個或多個表中返回資料的單條select語句。mysql也允許執行多個查詢 多條select語句 並將結果作為單個查詢結果集返回。這些組合查詢通常稱為並 union 有兩種情況需要使用組合查詢 在單個表查詢中從不同的表返回類似結構的資料 對單個表執行多個查詢,按...

子查詢與組合查詢

當我們想查詢另外乙個表的字段資訊的時候就可以使用子查詢 select 欄位1 欄位2,select 字段 from 表2 where 條件 from 表1因為這邊in是可以放乙個集合的所有可以結合使用exists與in差不多但是要注意寫法 select 欄位1 欄位2 from 表1 where 欄...

MYSQL子查詢和分組查詢

一 子查詢 1 子查詢 subquery 巢狀在其他查詢中的查詢。例如 select user id from usertable where mobile no in select mobile no from mobile where mobile id 10086 這條sql語句中,括號內為從...