- •Objectivesj i
- •HAVINGI Clausel withi Subqueriesi
- •Usingi a Subquery to Solvel a Probleml
- •Subqueriesi
- •Usingi a Subquery
- •Guidelinesi li for Usingi Subqueriesi
- •Types of Subqueriesi
- •Singlei le-Row Subqueriesi
- •Executingi Singlei le-Row Subqueriesi
- •Usingi Group Functionsi
- •What IsIs Wrong
- •Willill Thisis Statement Work?
- •Multiplel i le-Row Subqueriesi
- •Usingi ANY Operator inin Multiplel i le-Row Subqueriesi
- •Usingi ALL Operator inin Multiplel i le-Row Subqueriesi
- •Summary
- •Practicei Overviewi
What IsIs Wrong
|
|
|
withi Thisis Statement?ry |
||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
e |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
u |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
q |
|
|
|
|
|
SQL> SELECT empno, ename |
|
|
|
|
|
|
|
|
b |
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
u |
|
|
|
|
||||||||
|
|
2 |
FROM |
emp |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
s |
|
|
|
|
|
|||
|
|
3 |
WHERE |
sal = |
|
|
|
|
|
|
|
|
|
|
ow |
|
|
|
|
|
|
|
|
4 |
|
|
|
|
|
(SELECT |
|
|
|
|
r |
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
MIN(sal)- |
|
|
|
|
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
e |
|
|
|
|
|
|
|
|
5 |
|
|
|
|
|
FROM |
|
|
|
l |
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
pemp |
|
|
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
t |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
l |
|
|
|
|
|
|
|
|
|
|
|
6 |
|
|
|
|
|
|
|
|
u |
deptno); |
|
|
|
|
|||||
|
|
|
|
|
|
|
GROUP BY |
|
|
|
|
|
|||||||||
|
|
|
|
|
|
|
|
|
|
|
m |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
h |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
t |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
r |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ERROR: |
|
|
|
|
o |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
t |
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
r |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ORA-01427: single-rowasubquery returns more than |
|
||||||||||||||||||
|
|
|
|
|
|
|
e |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
one row |
|
|
p |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
o |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
no rows selectedro |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
- |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
e |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
l |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
g |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
n |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
S |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
6-12
Willill Thisis Statement Work?
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
SQL> SELECT ename, job |
|
|
|
|
|
|
|
|
|||||
|
2 |
FROM |
emp |
|
|
|
|
|
|
|
|
|
|
|
|
3 |
WHERE |
job = |
|
|
|
|
|
|
|
|
|
s |
|
|
4 |
|
(SELECT job |
|
|
|||||||||
|
|
|
e |
|
||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
u |
|
|
|
|
|
|
|
|
|
|
|
|
|
l |
|
|
|
5 |
|
FROM |
|
|
emp |
a |
|
||||||
|
|
|
|
v |
|
|
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
6 |
|
WHERE |
|
|
|
|
o |
|
|
||||
|
|
|
ename='SMYTHE'); |
|
||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
n |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
s |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
n |
|
|
|
|
|
|
|
|
|
|
|
|
|
r |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
u |
|
|
|
|
|
|
|
|
|
|
|
|
|
t |
|
|
|
|
|
|
no rows selected |
|
|
|
|
|
e |
|
|
|
|
|||
|
|
|
|
|
r |
|
|
|
|
|
||||
|
|
|
|
|
|
|
y |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
r |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
e |
|
|
|
|
|
|
|
|
|
|
|
|
|
u |
|
|
|
|
|
|
|
|
|
|
|
|
|
q |
|
|
|
|
|
|
|
|
|
|
|
|
|
b |
|
|
|
|
|
|
|
|
|
|
|
|
|
u |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
S |
|
|
|
|
|
|
|
|
|
|
|
6-13
Multiplel i le-Row Subqueriesi
•• Returnt rn morere thant one rowr
•• Use multiplelti le--rowr comparisonri operatorsr t rs
Operator |
|
Meaning |
IN |
|
Equal to any member in the list |
|
|
|
ANY |
|
Compare value to each value returned by |
|
|
the subquery |
|
|
|
ALL |
|
Compare value to every value returned by |
|
the subquery |
|
|
|
|
|
|
|
6-14
Usingi ANY Operator inin Multiplel i le-Row Subqueriesi
SQL> |
SELECT |
empno, ename, job 1300 |
|
||
2 |
FROM |
emp |
|
1100 |
|
|
800 |
|
|||
3 |
WHERE |
sal < ANY |
950 |
|
|
4 |
|
|
|
(SELECT |
sal |
5 |
|
|
|
FROM |
emp |
6 |
|
|
|
WHERE |
job = 'CLERK') |
7 |
AND |
job <> 'CLERK'; |
|
||
|
EMPNO ENAME |
JOB |
|
||
--------- ---------- |
--------- |
|
|||
|
7654 MARTIN |
SALESMAN |
|
||
|
7521 WARD |
SALESMAN |
|
||
6-15
Usingi ALL Operator inin Multiplel i le-Row Subqueriesi
SQL> |
SELECT |
empno, ename, job 1566.6667 |
|||
2 |
FROM |
emp |
|
2175 |
|
3 |
WHERE |
sal > ALL |
2916.6667 |
|
|
|
|
||||
4 |
|
|
(SELECT |
avg(sal) |
|
5 |
|
|
FROM |
|
emp |
6 |
|
|
GROUP BY |
deptno); |
|
|
|
|
|
|
|
EMPNO |
ENAME |
JOB |
|
|
--------- |
---------- |
--------- |
|
|
7839 |
KING |
PRESIDENT |
|
|
7566 |
JONES |
MANAGER |
|
|
7902 |
FORD |
ANALYST |
|
|
7788 |
SCOTT |
ANALYST |
|
|
|
|
|
|
6-16
Summary
Subqueries are useful when a query is based on unknown values.
|
|
|
|
|
|
SELECT |
select_list |
|
|
|
FROM |
table |
|
|
|
WHERE |
expr operator |
|
|
|
|
(SELECT select_list |
|
|
|
|
FROM |
table); |
|
|
|
|
|
|
6-17
Practicei Overviewi
•Creating subqueries to query values based on unknown criteria
•Creating subqueries to query values based on unknown criteria
•Using subqueries to find out what values exist in one set of data and not in another
•Using subqueries to find out what values exist in one set of data and not in another
6-18
