子查詢基本意義,就是在一個查詢語句(select語句)中的內部,某些位置,又出現的「查詢語句」。本文主要和大家分享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的子查詢
XX in (值1,值2,值3,....);
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的子查詢
使用exists的查詢形式:
where exists( 子查询 )
所以:實際應用程式中,該子查詢,往往都不是獨立的子查詢,而是會需要跟「主查詢」的資料來源(表),建立某種關係-通常就是連結關係。建立的方式是“隱式的”,即沒有在代碼上體現關係,但卻在內部有其連接的“實質”。
注意:
- 其他子查詢,是可以獨立運作的,而且會得到一個執行的結果。
- 該子查詢中的條件,應該設定為跟主查詢的某個字段有一定的關聯性判斷,通常該判斷就是這兩個表的“本來該有的連接條件”
最後一個結論:
相關推薦:MySQL子查詢的詳細介紹什麼是mysql子查詢?如何利用子查詢進行過濾? MySQL子查詢的最佳化
以上是mysql子查詢簡單介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!