Oracle_Day2 子查詢
1.可以在主查詢的where select from having後面放置子查詢
(1)select後面:發現第三列的內容是子查詢的結果
select ename,sal,(select job from emp where empno=7839) from emp;
(2)from後面:
select *
from
(select ename,sal from emp)
查詢部門名稱為SALES的員工資訊
方法一(子查詢):
SELECT * FROM
EMP
WHERE DEPTNO=(SELECT DEPTNO FROM DEPT WHERE DNAME='SALES')
方法二(多表查詢):
SELECT * FROM
EMP E,DEPT D
WHERE E.DEPTNO=D.DEPTNO AND D.DNAME='SALES'
多行子查詢:查詢結果返回多行
1.ANY:和子查詢任意一個比較
查詢工資比30號部門任意一個員工高的員工資訊
方法一:使用ANY關鍵字,表示取子查詢裡任意一個值
SELECT * FROM EMP
WHERE SAL > ANY (SELECT SAL FROM EMP WHERE DEPTNO=30)
方法二:因為是大於子查詢的任意一個值,那麼實際只要大於子查詢的最小值就行,只要比最小值大,就大於它任意一個值了。
SELECT * FROM EMP
WHERE SAL > (SELECT MIN(SAL) FROM EMP WHERE DEPTNO=30)
2.ALL:和子查詢所有的結果比較
查詢工資比30號部門所有員工高的員工資訊
SELECT * FROM
EMP WHERE SAL > ALL(SELECT SAL FROM EMP WHERE DEPTNO=30)
方法二:因為是大於子查詢的所有值,那麼只要大於子查詢的最大值即可
SELECT * FROM
EMP WHERE SAL > (SELECT MAX(SAL) FROM EMP WHERE DEPTNO=30)
3.NOT IN:不在子查詢結果中出現
查詢不是老闆的員工資訊,也就是說EMP表中的DEPTNO!=MGR
在學習NOT IN的時候講過NOT IN後面的值不能為null,而IN是可以為NULL的。
而從下圖看到有一行資訊的MGR為null,所以下面這條sql語句永遠都不可能有結果。
SELECT * FROM EMP
WHERE EMPNO NOT IN (SELECT MGR FROM EMP)
SELECT * FROM EMP
WHERE EMPNO NOT IN (SELECT MGR FROM EMP WHERE MGR IS NOT NULL)
相關文章
- Oracle_Day2 查詢練習,以及分頁Oracle
- 子查詢-表子查詢
- 複雜查詢—子查詢
- SQL查詢的:子查詢和多表查詢SQL
- 相關子查詢&非相關子查詢概念
- MySQL子查詢MySql
- 子串查詢
- 使用子查詢
- MYsql 子查詢MySql
- oracle子查詢Oracle
- 查詢子串
- 子查詢分解
- 11子查詢
- sql子查詢SQL
- informix子查詢ORM
- MySQL聯結查詢和子查詢MySql
- select查詢之三:子查詢
- mysql-分組查詢-子查詢-連線查詢-組合查詢MySql
- 區分關聯子查詢和非關聯子查詢
- sql語法相關子查詢與非相關子查詢SQL
- exist-in和關聯子查詢-非關聯子查詢
- MySQL之連線查詢和子查詢MySql
- 巢狀子查詢巢狀
- GORM subquery 子查詢GoORM
- SQL--子查詢SQL
- Oracle with重用子查詢Oracle
- oracle with 子查詢用法Oracle
- select子查詢
- mysql的子查詢MySql
- Javaweb-子查詢JavaWeb
- MYSQL學習筆記25: 多表查詢(子查詢)[標量子查詢,列子查詢]MySql筆記
- Oracle查詢轉換(五)子查詢展開Oracle
- 關聯查詢子查詢效率簡單比照
- 【MySQL】檢視&子查詢MySql
- MySQL 相關子查詢MySql
- 教你使用SQLite 子查詢SQLite
- [MYSQL -14]使用子查詢MySql
- 【MySQL】子查詢之一MySql