MySQL子查詢筆記整理

2021-09-26 09:39:39 字數 1585 閱讀 9695

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...