1、子查詢型別:
1、where型:把內層查詢的結果作為外層查詢的比較條件
2、from型:把內層的查詢結果當成臨時表,供外層sql再次查詢。查詢結果集可以當成表看待。臨時表要使用乙個別名。
3、exists型:把外層sql的結果,拿到內層sql去測試,如果內層的sql成立,則該行取出。內層查詢是exists後的查詢。
4、any, in 。
5、from前子查詢(挨踢自己描述的,具體不知道官方如何定義。)
where型
介紹:把內層查詢的結果作為外層查詢的比較條件
案例:
select goods_id,goods_name,shop_price
from goods
where goods_id =
(select
max(goods_id)
from goods)
;from型
介紹:把內層的查詢結果當成臨時表,供外層sql再次查詢。查詢結果集可以當成表看待
案例:
select goods_id,goods_name,cat_id,shop_price from
(select goods_id,goods_name,cat_id,shop_price from goods order
by cat_id asc
,goods_id desc
)as tmp
group
by cat_id;
exists型
介紹:把外層sql的結果,拿到內層sql去測試,如果內層的sql成立,則該行取出。內層查詢是exists後的查詢。
案例:
select c.cat_id,c.cat_name
from category c
where
exists
(select
1from goods g where g.cat_id = c.cat_id)
;any, in型
//any型
select cat_id,cat_name
from category
where cat_id >
any(
select num from nums)
;//in型
select cat_id,cat_name
from category
where cat_id in
(select num from nums)
;from前子查詢
select c.cat_id,c.cat_name,
(select cat_name from goods g where g.cat_id = c.cat_id) cat_name
from category c
2、其他注意:
1、in 的效果 跟 =any是一樣的
2、not in 和 <> any 的效果是一樣的
Mysql連線查詢 子查詢 聯合查詢 整理
連線查詢 連線語法的基本形式 from 表1 連線方式 join 表2 on 連線條件 交叉連線 語法 from 表1 cross join 表2 可見交叉連線只是沒有on條件而已。cross這個詞也可以省略,還可以使用inner這個詞代替 內連線 語法 from 表1 inner join 表2 ...
(MySQL筆記)MySQL子查詢
mysql的select語句中支援子查詢。子查詢是將乙個select語句的查詢結果作為中間結果,供另乙個select語句查詢呼叫,子查詢也叫做子選擇或者巢狀選擇。如 select studentno from select studentno,from student where age 18 as...
MySQl學習筆記(子查詢)
修改資料表 新增單列 alter table tbl name add column col name column definition first after col name 省略first after col name將預設你所新增的列位於所有列的最後面 例 alter table user...