MYSQL子查詢的五種形式

2021-06-18 21:57:18 字數 1075 閱讀 3832

mysql從4.1版開始支援子查詢功能,在此版本前,可以用join寫連表查詢來進行替代,但不推薦這麼寫,相當的麻煩。mysql子查詢的幾種常見寫法:

select

* from

*** 

where

col = [

any|

all](

select

* from

***x); 

select

* from

*** 

where

col in(

select

* from

***x); 

該 句法相當的明了,就是查詢語句的where子句是以子查詢語句的結果作為其範圍的,與上一種語法的any相似。

select

row(value1,value2.....) = [

any](selectcol1,col2..); 

該語句的執行實質是:子查詢語句的執行所得的結果與查詢的結果集匹配,若能找到匹配的返回真,否則返回假,並且兩邊的結果集都是一組離散值。

select

.... 

where

col = [

not] exists (

select

......); 

該語句比較蹩腳,其執行是這樣的:當子查詢進行操作,有返回結果的時候,該語句才會執行,而且有多少個結果,語句就執行幾次。

select

.... 

from

(select

.....) 

asname

where

...... 

該句法,在平時用的比較少,而且並不好理解。其實是這麼一回事,通過子查詢執行的結果來構造一張新的表(這個表是一張衍生資料表,是一張虛擬的表),其用來作為主句的查詢的物件,該句法功能非常強大,在一些複雜的查詢中會經常用到。

子查詢雖然挺方便,但其有不少缺點,其不支援limit,而且經實驗證明其執行效率相當不理想,在一般的情況下,還是不推薦使用子查詢。

MYSQL子查詢的五種形式

mysql從4.1版開始支援子查詢功能,在此版本前,可以用join寫連表查詢來進行替代,但不推薦這麼寫,相當的麻煩。以下是mysql子查詢的幾種常見寫法 1.select from where col any all select from x 2.select from where col in ...

MySQL查詢語句(五) 子查詢

mysql查詢語句 四 order by與limit 把查詢語句的結果當where的判斷條件進行查詢,子查詢的結果為單列。1 查出本 最新的 goods id最大 的一條商品 使用排序 按照goods id desc排序,再取第一行 mysql select goods id,goods name ...

Mysql基礎入門(五)子查詢

有如下表,現要求編寫sql語句,檢視年齡比 李斯文 小的學生,要求顯示這些學生的資訊 紅框中的學生是比李斯文年齡小的學生。第一步 查詢得到 李斯文 的出生日期 select borndate from student where studentname 李斯文 1993 07 03第二步 利用whe...