子查詢:
子查詢簡單來了解就是用查詢的結果在記憶體中建構一個資料表,而我們可以使用普通sql語句來操控這個記憶體中的資料表,這個資料表就叫做子查詢。
一、傳回單行單列資料的子查詢。
select ename from myemp;
傳回結果:
ENAME
BLAKE
傳回的這個名稱即在記憶體中建構了一個單行單列的資料的表,‘ENAME’是列名稱,'BLACK'是單行單列的值,我們可以使用普通的查詢語句對其進行查詢,如:
select * from (select ename from myemp where empno=7698);
傳回結果,仍是:
ENAME
BLAKE
在實際應用中,如果要檢視表中和某列的資料相同的所有資料就可以利用傳回單行單列的子查詢進行實作,如查詢所有和empno為7698工資相同的所有人員資訊:
select * from myemp where sal=(select sal from myemp where empno=7698);
傳回結果:
7698 BLAKE MANAGER 7839 01-5月 -81 2850 (null) 30
二、傳回單行多列的子查詢
select empno,ename,sal from myemp where empno=7369;
傳回結果:
EMPNO ENAME SAL
7369 SMITH 5600
傳回結果在記憶體中構成一個單行多列的資料表,傳回單行多列的子查詢在實際應用中與傳回單行單列的資料類似,隻是查詢條件可以擴充成多個,用括号把查詢條件括起來:
例如:查詢sal和comm和empno為7698相同的人員的資訊:
select * from myemp where (sal,comm)=(select sal,comm from myemp where empno=7698);