mysql子查詢是什么

mysql的子查詢是多表查詢的一個重要組成部分,常常和連接查詢一起使用,是多表查詢的基礎。下面本篇文章就來帶大家了解一下子查詢,希望對你們有所幫助。

mysql子查詢是什么

什么是子查詢?

子查詢,又叫內部查詢。當一個查詢是另一個查詢的條件時,稱之為子查詢。子查詢可以使用幾個簡單命令構造功能強大的復合命令。子查詢最常用于select-sql命令的WHERE子句中。

子查詢是一個 SELECT 語句,它嵌套在一個 SELECT、SELECT…INTO 語句、INSERT…INTO 語句、delete 語句、或 UPDATE 語句或嵌套在另一子查詢中。

二、子查詢分類

子查詢分為如下幾類:?

1、 標量子查詢:返回單一值的標量,最簡單的形式。?

2、 列子查詢:返回的結果集是 N 行一列。?

3、行子查詢:返回的結果集是一行 N 列。?

4、 表子查詢:返回的結果集是 N 行 N 列。?

可以使用的操作符:= > = ANY IN SOME ALL EXISTS

一個子查詢會返回一個標量(就一個值)、一個行、一個列或一個表,這些子查詢稱之為標量、行、列和表子查詢。

如果子查詢返回一個標量值(就一個值),那么外部查詢就可以使用:=、>、=、符號進行比較判斷;如果子查詢返回的不是一個標量值,而外部查詢使用了比較符和子查詢的結果進行了比較,那么就會拋出異常。

1、 標量子查詢:

是指子查詢返回的是單一值的標量,如一個數字或一個字符串,也是子查詢中最簡單的返回形式。 可以使用 = > = 這些操作符對子查詢的標量結果進行比較,通常子查詢的位置在比較式的右側?

示例:

SELECT?*?FROM?article?WHERE?uid?=?(SELECT?uid?FROM?user?WHERE?status=1?ORDER?BY?uid?DESC?LIMIT?1) SELECT?*?FROM?t1?WHERE?column1?=?(SELECT?MAX(column2)?FROM?t2) SELECT?*?FROM?article?AS?t?WHERE?2?=?(SELECT?COUNT(*)?FROM?article?WHERE?article.uid?=?t.uid)

2、mysql 列子查詢:

指子查詢返回的結果集是 N 行一列,該結果通常來自對表的某個字段查詢返回。?

可以使用 =?>?=??這些操作符對子查詢的標量結果進行比較,通常子查詢的位置在比較式的右側?

可以使用 IN、ANY、SOME 和 ALL 操作符,不能直接使用 = > = 這些比較標量結果的操作符。?

示例:

SELECT?*?FROM?article?WHERE?uid?IN(SELECT?uid?FROM?user?WHERE?status=1) SELECT?s1?FROM?table1?WHERE?s1?>?ANY?(SELECT?s2?FROM?table2) SELECT?s1?FROM?table1?WHERE?s1?>?ALL?(SELECT?s2?FROM?table2)

NOT IN 是 ALL 的別名,二者相同。?

特殊情況:

如果 table2 為空表,則 ALL 后的結果為 TRUE;?

如果子查詢返回如 (0,NULL,1) 這種盡管 s1 比返回結果都大,但有空行的結果,則 ALL 后的結果為 UNKNOWN 。?

注意:對于 table2 空表的情況,下面的語句均返回 NULL:

SELECT?s1?FROM?table1?WHERE?s1?>?(SELECT?s2?FROM?table2) SELECT?s1?FROM?table1?WHERE?s1?>?ALL?(SELECT?MAX(s1)?FROM?table2)

3、MySQL 行子查詢:

指子查詢返回的結果集是一行 N 列,該子查詢的結果通常是對表的某行數據進行查詢而返回的結果集。?

例子:

SELECT?*?FROM?table1?WHERE?(1,2)?=?(SELECT?column1,?column2?FROM?table2) //注:(1,2)?等同于?row(1,2) SELECT?*?FROM?article?WHERE?(title,content,uid)?=?(SELECT?title,content,uid?FROM?blog?WHERE?bid=2)

4、MySQL 表子查詢:

指子查詢返回的結果集是 N 行 N 列的一個表數據。?

例子:

SELECT?*?FROM?article?WHERE?(title,content,uid)?IN?(SELECT?title,content,uid?FROM?blog)

? 版權聲明
THE END
喜歡就支持一下吧
點贊10 分享