您好,登錄后才能下訂單哦!
小編給大家分享一下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)
看完了這篇文章,相信你對mysql子查詢指的是什么有了一定的了解,想了解更多相關知識,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。