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 列子查詢:
= > < >= <= <> 這些運算子對子查詢的標量結果進行比較,通常子查詢的位置在比較式的右側
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)
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子查詢是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!