使用子查詢
一、語法
-
SELECT SELECT_LIST
-
FROM TABLE
- WHERE EXPR OPERATOR (SELECT SELECT_LIST FROM TABLE);
主查詢使用子查詢結果。
二、單行子查詢
WHERE子句中使用單行子查詢時,可以使用單行比較運算子(=,>,>=,<,<=,<>),將子查詢的返回結果當做單一數值來使用。需要小心的是子查詢返回的結果的不確定,即返回空值或多值。具體分為三種情況:
1、返回單行:即為單行子查詢。
2、未返回任何行:如果子查詢未返回任何行(相當於返回NULL),則主查詢將不再執行,所以主查詢也不會返回任何結果。
3、返回多行:是多行子查詢,此時不允許使用單行比較運算子,否則出錯。
三、多行子查詢
在WHERE子句中使用多行子查詢時,可以使用多行比較運算子(IN,ALL,ANY),將子查詢的返回結果當做數值集合來使用。其中,ALL和ANY運算子必須與單行比較運算子(=,>,>=,<,<=,<>)結合使用。例如WHERE sal>ALL(子查詢)。
1、IN:等於任何一個
2、ALL:和子查詢返回的所有值比較。例如:sal>ALL(1,2,3)等價於sal>3,即大於所有。
3、ANY:和子查詢返回的任意一個值比較。例如:sal>ANY(1,2,3)等價於sal>1,即大於任意一個就可以。
4、EXISTS:判斷子查詢是否有返回結果(不關心具體行數和內容),如果返回則為TRUE,否則為FALSE。(常用於相關子查詢)
四、例子
-
--單行子查詢
-
--1.如何查得所有比“CLARK”工資高的員工的資訊
-
--普通查詢
-
SELECT ENAME, SAL FROM EMP WHERE ENAME = 'CLARK';
-
SELECT * FROM EMP WHERE SAL > 2450;
-
-
--子查詢
-
SELECT * FROM EMP WHERE SAL > (SELECT SAL FROM EMP WHERE ENAME = 'CLARK');
-
-
- --2.查詢工資高於平均工資的僱員名字和工資
-
SELECT ENAME, SAL FROM EMP WHERE SAL > (SELECT AVG(SAL) FROM EMP);
-
-
-
-
--多行子查詢
-
--any:查詢工資低於任何一個“CLERK”的工資的僱員資訊。
-
select *
-
from emp
-
where sal < any(
-
select sal from emp where job='CLERK'
-
);
-
-
-
--all:查詢工資比所有的“SALESMAN”都高的僱員的編號、名字和工資。
-
select empno, ename, sal
-
from emp
-
where sal>all(
-
select sal
-
from emp
-
where job='SALESMAN'
-
)
-
-
--in:查詢部門20中職務同部門10的僱員一樣的僱員資訊。
-
select *
-
from emp
-
where job in(
-
select job
-
from emp
-
where deptno=10
- ) and deptno=20;
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/24851054/viewspace-2145482/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 子查詢-表子查詢
- 教你使用SQLite 子查詢SQLite
- [MYSQL -14]使用子查詢MySql
- Oracle OCP(08):使用子查詢Oracle
- 使用子查詢檢索資料
- 複雜查詢—子查詢
- SQL查詢的:子查詢和多表查詢SQL
- 相關子查詢&非相關子查詢概念
- MySQL子查詢MySql
- 子串查詢
- MYsql 子查詢MySql
- oracle子查詢Oracle
- 查詢子串
- 子查詢分解
- 11子查詢
- sql子查詢SQL
- informix子查詢ORM
- 關於mysql 子查詢中 使用 limitMySqlMIT
- SQL -- 使用聯結還是子查詢?SQL
- MySQL聯結查詢和子查詢MySql
- select查詢之三:子查詢
- mysql-分組查詢-子查詢-連線查詢-組合查詢MySql
- 區分關聯子查詢和非關聯子查詢
- sql語法相關子查詢與非相關子查詢SQL
- exist-in和關聯子查詢-非關聯子查詢
- RAC:在子查詢使用gv$檢視,有時查詢不出資料
- MySQL之連線查詢和子查詢MySql
- 巢狀子查詢巢狀
- GORM subquery 子查詢GoORM
- SQL--子查詢SQL
- Oracle with重用子查詢Oracle
- oracle with 子查詢用法Oracle
- select子查詢
- mysql的子查詢MySql
- Javaweb-子查詢JavaWeb
- Oracle OCP(14):使用子查詢檢索資料Oracle
- OCP課程8:SQL之使用子查詢SQL
- MYSQL學習筆記25: 多表查詢(子查詢)[標量子查詢,列子查詢]MySql筆記