1. 程式人生 > >Oracle子查詢

Oracle子查詢


當不能一步求解時,可以考慮使用子查詢。

1.語法

SELECT select_list
FROM table
WHERE expr operator
	(SELECT select_list
	FROM table);

子查詢 (內查詢)在主查詢之前一次執行完成。
子查詢的結果被主查詢使用 (外查詢)。

2.注意事項

1.子查詢要包含在括號內。
2.將子查詢放在比較條件的右側。
3.在主查詢的select, from, where, having都可以放子查詢
4.不可以在主查詢的group by放子查詢
5.主查詢和子查詢可以不是用一張表,只要子查詢返回的結果主查詢可以使用,即可
6.單行操作符對應單行子查詢,多行操作符對應多行子查詢。

select後面放子查詢要求該子查詢必須是單行子查詢。

3.子查詢型別

①單行子查詢
②多行子查詢

4.單行子查詢

子查詢只返回一行結果。

①單行子查詢

select * from emp where ename = 
	(select ename from emp where empno = '7369')

單行子查詢結果

②子查詢中使用組函式

select * from emp where sal = 
	(select max(sal) from emp)

子查詢中使用組函式

③子查詢中HAVING子句

select deptno,min(sal) 
from emp 
group by deptno
having
min(sal) > (select min(sal) from emp where deptno = 20);

子查詢中使用HAVING子句

④select後子查詢

select empno,(select max(empno) from emp) from emp;

SELECT後跟子查詢語句

5.多行子查詢

多行子查詢操作符

①IN操作符,或者NOT IN

select * from emp where empno in (select empno from emp);

②ANY操作符

小於某集合中的任意一個值,就是小於集合中的最大值。
大於某集合中的任意一個值,就是大於集合中的最小值。

例,查詢工資比10號部門任意一個員工工資低的員工資訊

select
* from emp where sal < any(select sal from emp where deptno = 10); ## 相當於 select * from emp where sal < (select max(sal) from emp where deptno = 10);
select * from emp
where sal > 
	any(select sal from emp where deptno = 10);
	
## 相當於
select * from emp
where sal > 
	(select min(sal) from emp where deptno = 10);

③ALL操作符

小於某集合中的所有值,就是小於最小值。
大於某集合中的所有值,就是大於最大值。

例,查詢工資比10號部門所有員工工資低的員工資訊

select * from emp
where sal < 
	all(select sal from emp where deptno = 10);
	
## 相當於
select * from emp
where sal < 
	(select min(sal) from emp where deptno = 10);	
select * from emp
where sal > 
	all(select sal from emp where deptno = 10);
	
## 相當於
select * from emp
where sal > 
	(select max(sal) from emp where deptno = 10);

相關推薦

oracle 查詢

哪些 nvl 操作 最大值 rom 區別 1=1 group 多列 6-1:子查詢簡介 6-2: select * from scott.emp where sal=(select MIN(sal) from scott.emp)

Oracle查詢和多表查詢

左外連接 查詢 sele 多表查詢 字段 ora 需要 avg lar 多表查詢需要用到表的連接 連接可以分為:(自行百度)   交叉連接(數字邏輯的笛卡爾積,不做解釋)     等值連接       例如:select * from t_a, t_b where t_a.

Oracle查詢相關內容(包含TOP-N查詢和分頁查詢)

職位 oracle子查詢 員工 having 信息 不同 group 最大 mount 本節介紹Oracle子查詢的相關內容: 實例用到的數據為oracle中scott用戶下的emp員工表,dept部門表,數據如下: 一、子查詢 1、概念:嵌入在一個查詢中的另一個

oracle 查詢和組合函式

oracle 子查詢和組合函式 --查詢與“SCOTT”在同一個部門的員工 select empno,ename,deptno from emp where deptno in (select deptno from emp where ename='SCOTT'); --查詢不在銷售部和財務部工作的僱

Oracle 查詢的基本語法以及使用原則

在整個SQL查詢語句過程中,子查詢並不具備特殊的語法,在整個SQL查詢操作子句中:SELECT、  FROM  、WHERE 、GROUB BY  、HAVING  、 ORDER BY。 如果非要給出子查詢的語法,那麼只能怪進行拼湊。

Oracle查詢的注意問題

1.    子查詢中小括號,子查詢要用()包起來 select * from emp where sal>(select * from emp where ename=’likang’) 2.    Oracle子查詢書寫風格 縮緊、對齊、換行等等,便於觀察 3.  

oracle 查詢中null的問題(in 和 not in)

這裡的in後面的句子可以理解為or拼接,簡單舉例即 in (9566,9839,null)可以等價於mgr=9566 or mgr=9839 or mgr=null, not in (9566,9839,null)可以等價於not(mgr=9566 or mgr=9839 o

oracle查詢和表連線

有如下兩張表:部門表和教師表 1、查詢出招生部門所有男老師姓名(子查詢放在where語句中) select tname, deptno from teacher where deptno in (select deptno from dept where dname='

Oracle-查詢

子查詢在企業中用的是最多的,功能強大,效率比較高,所以子查詢應該是學習的重點、 1、any操作符 1.1、=any 功能與in操作符是完全一樣的 1.2、>any 比子查詢中返回記錄的最小的還要大的資料 1.3、<any 比子查詢中返回記錄的最大的還要小的

Oracle查詢

當不能一步求解時,可以考慮使用子查詢。 1.語法 SELECT select_list FROM table WHERE expr operator (SELECT select_list FROM table); 子查詢 (內查詢)在主查詢之前一次執行

Oracle 查詢等常見的sql語句

oracle 對於漢字,如果資料庫字元編碼為 GBK 佔用2個位元組,如果是UTF-8則佔用3個位元組。 1.建表 create table student(); create table class(id number primary key,name varchar(2

Oracle-查詢/復雜查詢實例

dna 單列 name pre min 需要 查詢語句 判斷 temp 子查詢的應用範圍: WHERE: 一般返回單行單列,單行多列,多行單列 HAVING:子查詢如果出現在HAVING中,只有一種情況就是子查詢返回單行單列數據,且需要進行統計函數計算 FROM:返回多行多

Oracle 查詢,按降序排列,取前n條

比如,有一個student 表: id             student_name      1                                  s1 2                                  s2 03       

oracle 查詢 where having from ,from查詢提高效率

如果 clas 性能問題 查詢 嵌入 區別 group 一個 col where 子查詢主要功能是控制數據行的,返回結果一般都是單行單列、多行單列、單行多列數據 單行單列 SELECT * FROM emp WHERE hiredate=(   S

Oracle DB 使用查詢來解決查詢

目的 滿足 多少 group 錯誤 water 列表 功能 產生 ? 定義子查詢 ? 描述子查詢可以解決的問題類型 ? 列出子查詢的類型 ? 編寫單行和多行子查詢 ? 子查詢:類型、語法和準則 ? 單行子查詢: – 子查詢中的組函數 – 帶有子查詢的HAVING子句

徹底搞懂oracle的標量查詢

article pop acc 問題 content 狀態 cat tracking varchar2 oracle標量子查詢和自己定義函數有時用起來比較方便,並且開發者也常常使用。數據量小還無所謂。數據量大,往往存在性能問題。 下面測試幫助大家徹底搞懂標量子查

oracle學習之多表查詢查詢以及事務處理

color 1-1 註意事項 員工 列數 .com 外連接 分析 top-n分析 多表查詢的基礎是采用笛卡爾集: 最終的行數 = 表1的行數 * 表2的行數 最終的列數 = 表1的列數 + 表2的列數 過濾笛卡爾集的關鍵是寫連接條件,N張表至少需要N-1個條件。 多表

oracle查詢、創建用戶、創建表、約束

pre 條件 不為 varchar 作用 rim 修改 特點 刪除一個用戶 子查詢 子查詢可以分為單行子查詢和多行子查詢 單行子查詢   [1] 將一個查詢的結果作為另外一個查

Oracle查詢

只有一個 一次 oracle子查詢 註意 需要 rac class 存在 pre Oracle子查詢:當一個查詢依賴於另外一個查詢的結果的時候,就需要使用子查詢。單行子查詢 :篩選條件不明確,需要執行一次查詢且查詢結果只有一個字段且字段值只有一個。註意:where子句中允許

Oracle作業5——多表查詢查詢

一、基礎練習: 1.查詢和scott相同部門的員工姓名ename和僱用日期hiredate SELECT ENAME,HIREDATE FROM EMP WHERE DEPTNO=(SELECT DEPTNO FROM EMP WHERE ENAME='SCOTT'); 2.查詢在部門的l