子查詢中all與any的區別
有些人往往對子查詢中涉及到的all與any容易混淆,以為兩個表達的是同一個意思,
就以理解英文字面上的大概意思去理解。這裡,all是所有,any是指任意一個。
以下透過一些例子更明瞭地去講述這兩個詞在查詢中的意思。
資料背景,都以該查詢結果作為子查詢的結果:
SQL> SELECT distinct salary
2 FROM employees
3 WHERE job_id = 'IT_PROG';
SALARY
----------
9000
4800
4200
6000
1、All:
1》小於:
SQL> SELECT employee_id, last_name, job_id, salary
2 FROM employees
3 WHERE salary < ALL
4 (SELECT salary
5 FROM employees
6 WHERE job_id = 'IT_PROG')
7 AND job_id <> 'IT_PROG';
EMPLOYEE_ID LAST_NAME JOB_ID SALARY
----------- ------------------------- ---------- ----------
185 Bull SH_CLERK 4100
192 Bell SH_CLERK 4000
193 Everett SH_CLERK 3900
188 Chung SH_CLERK 3800
137 Ladwig ST_CLERK 3600
189 Dilly SH_CLERK 3600
141 Rajs ST_CLERK 3500
......
128 Markle ST_CLERK 2200
136 Philtanker ST_CLERK 2200
132 Olson ST_CLERK 2100
44 rows selected.
2》大於:
SQL> SELECT employee_id, last_name, job_id, salary
2 FROM employees
3 WHERE salary >ALL
4 (SELECT salary
5 FROM employees
6 WHERE job_id = 'IT_PROG')
7 AND job_id <> 'IT_PROG';
EMPLOYEE_ID LAST_NAME JOB_ID SALARY
----------- ------------------------- ---------- ----------
157 Sully SA_REP 9500
151 Bernstein SA_REP 9500
163 Greene SA_REP 9500
170 Fox SA_REP 9600
......
EMPLOYEE_ID LAST_NAME JOB_ID SALARY
----------- ------------------------- ---------- ----------
100 King AD_PRES 24000
23 rows selected.
2、Any:
1》小於:
SQL> SELECT employee_id, last_name, job_id, salary
2 FROM employees
3 WHERE salary < ANY
4 (SELECT salary
5 FROM employees
6 WHERE job_id = 'IT_PROG')
7 AND job_id <> 'IT_PROG';
EMPLOYEE_ID LAST_NAME JOB_ID SALARY
----------- ------------------------- ---------- ----------
132 Olson ST_CLERK 2100
136 Philtanker ST_CLERK 2200
128 Markle ST_CLERK 2200
135 Gee ST_CLERK 2400
... ...
177 Livingston SA_REP 8400
176 Taylor SA_REP 8600
175 Hutton SA_REP 8800
76 rows selected.
2:》大於:
SQL> SELECT employee_id, last_name, job_id, salary
2 FROM employees
3 WHERE salary > ANY
4 (SELECT salary
5 FROM employees
6 WHERE job_id = 'IT_PROG')
7 AND job_id <> 'IT_PROG';
EMPLOYEE_ID LAST_NAME JOB_ID SALARY
----------- ------------------------- ---------- ----------
100 King AD_PRES 24000
101 Kochhar AD_VP 17000
102 De Haan AD_VP 17000
145 Russell SA_MAN 14000
... ...
EMPLOYEE_ID LAST_NAME JOB_ID SALARY
----------- ------------------------- ---------- ----------
124 Mourgos ST_MAN 5800
200 Whalen AD_ASST 4400
57 rows selected.
從上面的例子看到,all是表示所有的,如果主查詢查的是大於所有的,則大於子查詢最大的那個就是主查詢的查詢結果,
小於所有的,則小於子查詢最小的那個就是主查詢的查詢結果。any是表示任意一個,不是所有,如果主查詢查的是大於
任意一個,則大於子查詢集中一個就可以了,小於任意一個,同樣的,則小於子查詢集中一個就可以了。這就是它們容易
混淆的地方,也是它們區別的地方。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31392094/viewspace-2125962/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- TypeScript 中 unknown 與 any 有啥區別TypeScript
- 在資料庫的查詢與更新中,CHARINDEX與instr的區別?資料庫Index
- mysql求交集:UNION ALL合併查詢,inner join內連線查詢,IN/EXISTS子查詢MySql
- Swift中Any、AnyHashable、AnyObject、AnyClass區別SwiftObject
- 區分關聯子查詢和非關聯子查詢
- sql中UNION和UNION ALL的區別SQL
- SQL查詢的:子查詢和多表查詢SQL
- exists與in子查詢優化優化
- union all和union的區別
- 15、Oracle中的高階子查詢Oracle
- Linux中的查詢命令:find、locate、whereis、which、type及其區別Linux
- 複雜查詢—子查詢
- 什麼是SQL 語句中相關子查詢與非相關子查詢SQL
- MySQL中使用or、in與union all在查詢命令下的效率對比MySql
- 在 with 查詢中只查詢個別欄位
- MySQL子查詢MySql
- 子串查詢
- MYsql 子查詢MySql
- Mysql中的巢狀子查詢問題QSBSMySql巢狀
- 樹狀陣列的區間查詢與區間修改陣列
- union 和union all 使用區別
- 中國城市降雨量歷史記錄查詢 All In One
- Python中 ‘==‘ 與‘is‘的區別Python
- Javascript中“==”與“===”的區別JavaScript
- mysql-分組查詢-子查詢-連線查詢-組合查詢MySql
- MYSQL學習筆記24: 多表查詢(聯合查詢,Union, Union All)MySql筆記
- MySQL之連線查詢和子查詢MySql
- MySQL如何查詢all有哪些許可權?MySql
- 如何在word中進行查詢與替換 word文件中的替換與查詢功能
- Javaweb-子查詢JavaWeb
- 巢狀子查詢巢狀
- GORM subquery 子查詢GoORM
- Mysql資料庫使用from與join兩表查詢的方法區別總結MySql資料庫
- MYSQL學習筆記25: 多表查詢(子查詢)[標量子查詢,列子查詢]MySql筆記
- git add all和git add .區別Git
- Java中(==)與equals的區別Java
- 【C#】-目標平臺×86、×64、Any CPU的區別C#
- 衛生紙國家標準查詢 All In One
- 專業的本地檔案搜尋查詢器:Find Any File (FAF) for MacMac