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子查詢 mysql子查詢指的是什麼
mysql子查詢指的是什麼 閱讀 105 什麼是子查詢?子查詢,又叫內部查詢。當乙個查詢是另乙個查詢的條件時,稱之為子查詢。子查詢可以使用幾個簡單命令構造功能強大的復合命令。子查詢最常用於select sql命令的where子句中。子查詢是乙個 select 語句,它巢狀在乙個 select sel...
mysql變數包括什麼意思 什麼是mysql變數?
什麼是mysql的變數?mysql變數分為幾種?在mysql資料庫中佔據了怎樣的地位?今天將為你講解mysql的變數。mysql變數是mysql資料庫中的基礎知識,下面就為您詳細介紹mysql變數,如果您對此方面感興趣的話,不妨一看,相信對您有所幫助。mysql變數介紹 mysql伺服器的系統變數,...
mysql求和 子查詢 MySQL子查詢
到現在為止,我們已經表明,以select宣告是乙個簡單的查詢。該單個語句從單個資料庫表中檢索資料。sql還同意建立乙個子查詢。即巢狀在其他查詢的查詢。下列實施例給出巢狀查詢。一種表示訂單資訊儲存,包含訂單號,客戶id。訂購日期。例如以下所看到的 一張表示儲存訂單物品資訊,例如以下 另一張表儲存的是客...