使用子查詢檢索資料
一、相關子查詢
相關子查詢對於外部查詢的每一個值都會有一個結果與其對應,其計算的過程是這樣的:1、掃描外查詢的第一條記錄
2、掃描子查詢,並將第一條記錄的對應值傳給子查詢,由此計算出子查詢的結果
3、根據子查詢的結果,返回外查詢的結果。
4、重複上述動作,開始掃描外查詢的第二條記錄,第三條記錄,直至全部掃描完畢
例句:
-
--查詢本部門最高工資的員工?
-
--方法一,使用巢狀子查詢(非關聯子查詢)
-
select * from emp a where (a.deptno,a.sal) in (select deptno,max(sal) from emp group by deptno);
-
-
--方法二,使用關聯子查詢
- select * from emp a where a.sal=(select max(sal) from emp where deptno=a.deptno);
二、EXISTS
exists是判斷 exits 後面的 sql 語句是否為真,若為真則整個sql句子成立,否則沒有任何記錄。例句:
- SELECT 1 FROM DUAL WHERE EXISTS (SELECT 1 FROM DUAL WHERE 2 = 1);
三、WITH
語法:-
SELECT *
-
FROM (--模擬生一個20行的資料
-
SELECT LEVEL AS lv
-
FROM DUAL
-
CONNECT BY LEVEL < 20) tt
-
WHERE tt.lv > 10 AND tt.lv < 15
-
-
WITH TT AS(--模擬生一個20行的資料
-
SELECT LEVEL AS lv
-
FROM DUAL
-
CONNECT BY LEVEL < 20)
-
SELECT lv
-
FROM TT
-
WHERE lv > 10 AND lv < 15
-
WITH tempName AS (SELECT ....)
- SELECT ...
可認為在真正進行查詢之前預先構造了一個臨時表TT,之後便可多次使用它做進一步的分析和處理
優點:
增加了SQL的易讀性,如果構造了多個子查詢,結構會更清晰;更重要的是:“一次分析,多次使用”,這也是為什麼會提供效能的地方,達到了“少讀”的目標。
例句:
-
--普通查詢
-
SELECT *
-
FROM (--模擬生一個20行的資料
-
SELECT LEVEL AS lv
-
FROM DUAL
-
CONNECT BY LEVEL < 20) tt
-
WHERE tt.lv > 10 AND tt.lv < 15;
-
-
--with語句
-
WITH TT AS(--模擬生一個20行的資料
-
SELECT LEVEL AS lv
-
FROM DUAL
-
CONNECT BY LEVEL < 20)
-
SELECT lv
-
FROM TT
- WHERE lv > 10 AND lv < 15;
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/24851054/viewspace-2145880/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle OCP(14):使用子查詢檢索資料Oracle
- 【MySQL】檢視&子查詢MySql
- MySQL資料庫基礎——多表查詢:子查詢MySql資料庫
- 資料檢索
- PostgreSQL一複合查詢SQL優化例子-(多個exists,範圍檢索,IN檢索,模糊檢索組合)SQL優化
- 資料庫學習(五)子查詢資料庫
- 檢視 Laravel 查詢資料語句Laravel
- 教你使用SQLite 子查詢SQLite
- MySQL-檢索資料MySql
- Oracle OCP(08):使用子查詢Oracle
- 複雜查詢—子查詢
- oracle資料庫sql查詢檢視第二次查詢很慢Oracle資料庫SQL
- Oracle OCP(01):使用SQL SELECT語句檢索資料OracleSQL
- 【搜尋引擎】Solr全文檢索近實時查詢優化Solr優化
- Elasticsearch 查詢結果分組統計,聚合檢索(group by stats)Elasticsearch
- SQL查詢的:子查詢和多表查詢SQL
- CYmysql根據json欄位內容作為查詢條件(包括json陣列)檢索資料dvnMySqlJSON陣列
- 資料庫的檢索語句資料庫
- 資料檢索擴充套件包套件
- 如何使用Amazon S3儲存和檢索資料S3
- MySQL - 資料查詢 - 簡單查詢MySql
- MYsql 子查詢MySql
- MySQL子查詢MySql
- 子串查詢
- 資訊檢索
- jpa 聯合查詢資料,查詢使用者資訊與部門資訊
- 學術檢索資料庫總結資料庫
- Java ——MongDB 插入資料、 模糊查詢、in查詢Java
- 資料庫高階查詢之子查詢資料庫
- 雲脈紙質文件管理系統:多重檢索輕鬆查詢文件
- mysql-分組查詢-子查詢-連線查詢-組合查詢MySql
- RESTFul資料查詢REST
- MYSQL查詢資料MySql
- indexedDB 查詢資料Index
- AMS 資料查詢
- 如何使用SQL查詢檢視,Postico使用技巧分享~SQL
- 區分關聯子查詢和非關聯子查詢
- MySQL之連線查詢和子查詢MySql
- 影象檢索:資訊檢索評價指標mAP指標