首頁 > 資料庫 > mysql教程 > mysql子查詢簡單介紹

mysql子查詢簡單介紹

小云云
發布: 2018-03-15 10:41:45
原創
2083 人瀏覽過

子查詢基本意義,就是在一個查詢語句(select語句)中的內部,某些位置,又出現的「查詢語句」。本文主要和大家分享mysql子查詢簡單介紹,希望能幫助大家。

範例:
mysql子查詢簡單介紹
修改後:
mysql子查詢簡單介紹

#如果將該「select 5000」的子查詢語句,替換為“select出來所有商品的平均價”,就具有了現實意義。

  • 子查詢是為主查詢服務的

  • #都是子查詢取得一定的結果資料之後,才去執行主查詢;

在形式上,可以有如下表達:

  • #selelct 欄位或表達式或子查詢[as 別名] from 表名或連結結果或子查詢where  欄位或運算式或子查詢的條件判斷

#即可以在這幾個位置出現子查詢(其中having其實也可以,因為它跟where是一樣意義);

子查詢,按位置(場合)分:

類型 形式
作為主查詢的結果資料 select c1,(select f1 from tab2) as f11 from tab1; #這裡子查詢應該只有一個資料(一行一列,標量子查詢)
作為主查詢的條件資料 select c1 from tab1 where c1 in (select f1 from tab2); #這裡子查詢可以是多個資料(多行一列,列子查詢)
作為主查詢的來源資料 select c1 from (select f1 as c1, f2 from tab2) as t2; #這裡子查詢可以是任意查詢結果(表子查詢)

常見子查詢

比較運算子中的子查詢

#形式:

  • 運算子比較運算符(標量子查詢);

說明:

  • #運算子的2個資料而已,通常就是一個欄位名稱;

  select ....  from XXX where  id > 5;
登入後複製

範例:

  • #找出最高價的商品;

  • ##
    select * from product  where  price = (select  max(price)  from  product );
    登入後複製
使用in的子查詢

  • 以前用的in的用法:

  • XX  in  (值1,值2,值3,....);
    登入後複製
  • 則in子查詢為:

  • XX  in  (列子查询)
    登入後複製
範例:

  • #找出所有類別名稱中帶「電」這個字的所有商品;

  • select  *  from  product  where  protype_id  in( 
    select  protype_id  from  product_type  where  protype_name  like ‘%电%’
    );
    登入後複製
使用any的子查詢

#形式:

操作数 比较运算符 any  (列子查询);
登入後複製

意義:

  • 當某個運算元(欄位) 對於該列子查詢的其中任一個值,滿足該比較運算符,就算是滿足了條件;

    例子:

  • select  *  from  tab1  where  id >  any  (select  f1  from  tab2);
    登入後複製
使用all的子查詢:

形式:

操作数  比较运算符 all   (列子查询);
登入後複製

意義:

  • 當某個運算元(欄位)對於該列子查詢的所有資料值,都滿足該比較運算符,才算滿足了條件;

例:

select  *  from  tab2  where  f1  >  all  ( select  id  from   tab1 );
登入後複製

使用some的子查詢

  • 一句話:some是any的同義字。

使用exists的查詢

形式:

where  exists( 子查询 )
登入後複製
意義:

  • 該子查詢如果“有資料”,則exists的結果是true,否則就是false

#說明:

##因為,exists子查詢的該意義,造成主查詢常出現這樣的情形:要麼全都取出,要麼都不取出。如果侷限於這個意義(使用情形),其基本就失去了它的現實使用意義。

所以:

實際應用程式中,該子查詢,往往都不是獨立的子查詢,而是會需要跟「主查詢」的資料來源(表),建立某種關係-通常就是連結關係。建立的方式是“隱式的”,即沒有在代碼上體現關係,但卻在內部有其連接的“實質”。

    此隱式連接方式,通常就體現在子查詢中的where條件語句中,使用了主查詢表中的資料(欄位);
  • 範例:

    查詢商品表中其類別名稱中帶有「電」一詞的所有商品;

  • mysql子查詢簡單介紹

  • 結果就:


mysql子查詢簡單介紹 注意:

- 這種子查詢語句,沒法“獨立存在(獨立運行)”,而是必須跟主查詢一起使用;

- 其他子查詢,是可以獨立運作的,而且會得到一個執行的結果。
- 該子查詢中的條件,應該設定為跟主查詢的某個字段有一定的關聯性判斷,通常該判斷就是這兩個表的“本來該有的連接條件”

最後一個結論:

如果一個查詢需求,可以使用連接查詢的,也可以使用子查詢得到,則通常推薦使用連接插敘,效率歸更高。

相關推薦:

MySQL子查詢的詳細介紹

什麼是mysql子查詢?如何利用子查詢進行過濾?

MySQL子查詢的最佳化

#

以上是mysql子查詢簡單介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板