mysql 列子查詢及 in、any、some 和 all 操作符的使用
mysql 列子查詢
列子查詢是指子查詢返回的結果集是 n 行一列,該結果通常來自對錶的某個字段查詢返回。
乙個列子查詢的例子如下:
select * from article where uid in(select uid from user where status=1)
列子查詢中使用 in、any、some 和 all 操作符
由於列子查詢返回的結果集是 n 行一列,因此不能直接使用 = > < >= <= <> 這些比較標量vxivg結果的操作符。在列子查詢中可以使用 in、any、some 和 all 操作符:
下面是原始資料表:
table1:
s1210
table2:
s2512
20any 操作符
any 關鍵字必須接在乙個比較操作符的後面,表示與子查詢返回的任何值比較為 true ,則返回 true 。乙個 any 例子如下:
select s1 from table1 where s1 > any (select s2 from table2)
查詢返回結果如下所示:
s110
在子查詢中,返回的是 table2 的所有 s2 列結果(5,12,20),然後將 table1 中vxivg的 s1 的值與之進行比較,只要大於 s2 的任何值即表示為 true,符合查詢條件。
in 是 = any 的別名,二者相同,但 not in 的別名卻不是 <> any 而是 <> some。
特殊情況
如果 table2 為空表,則 any 後的結果為 false;
如果子查詢返回如 (null,null,null) 列為空的結果,則 any 後的結果為 unknown 。
all 操作符
all 關鍵字必須接在乙個比較操作符的後面,表示與子查詢返回的所有值比較為 true ,則返回 true 。乙個 all 例子如下:
select s1 from table1 where s1 > all (select s2 from table2)
該查詢不會返回任何結果,因為 s1 中沒有比 s2 所有值都大的值。
當然在該例子查詢中,返回了 s2 的所有值,您可以在該子查詢中新增任何條件以限制返回的查詢結果而無需全部返回。
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)
mysql 行子查詢
行子查詢是指子查詢返回的結果集是一行 n 列,該子查詢的結果通常是對錶的某行資料進行查詢而返回的結果集。
乙個行子查詢的例子如下:
select * from table1 where (1,2) = (select column1, column2 from table2)
在該例子中,在保證子查詢返回單程式設計客棧一行資料的前提下,如果 column1=1 且 column2=2 ,則該查詢結果為 true。
mysql 行構造符
在上面的例子中,where 後面的 (1,2) 被稱為行構造符,也可以寫作 row(1,2)。行構造符通常用於與對能返回兩個或兩個以上列的子查詢進行比較。
mysql 行子查詢例項
下面是用於例子的兩張原始資料表:
article 表:
blog 表:
sql 如下:
select * from article where (title,content,uid) = (select title,content,uid from blog where bid=2)
查詢返回結果如下所示:
在該行子查詢例子中,將 article 表 title,content,uid 字段逐一與子查詢返回的行記錄作比較,如果相等則列出這些相等的記錄(理論上可能不止一條)。
本文標題: mysql中列子查詢與行子查詢操作的學習教程
本文位址: /shujuku/mysql/137336.html
MySQL中的標量子查詢,列子查詢,行子查詢
標量子查詢,列子查詢,行子查詢都屬於where子查詢,也就是說都寫在where之後 標量子查詢 概念 子查詢得到的結果是乙個資料 一行一列 語法 select from 資料來源 where 條件判斷 select 欄位名 from 資料來源 where 條件判斷 查詢到的結果就只有乙個結果 案例 ...
列子查詢(多行子查詢)
多行子查詢 返回多行。使用多行比較操作符。操作符 含義 in not in 等於列表中的任意乙個 any some 和子查詢返回的某乙個值比較 all 和子查詢返回的所有值比較 案例1 返回location id是1400或1700的部門中的所有員工姓名 1.查詢location id是1400或1...
七 SQL 子查詢 列子查詢
與標量子查詢不同,列值子查詢可以返回乙個多行多列的結果集。這樣的子查詢又被稱為錶子查詢,錶子查詢可以看作乙個臨時的表,錶子查詢可以用在select 語句的from子句中 insert語句 連線 in 子句等很多場合。首先來看乙個在from子句中使用的最簡單的錶子查詢。sql語句如下 select t...