Professional Documents
Culture Documents
“Sub-queries are
useful when a query is
based on
Unknown values”
Using a Sub-query to Solve a Problem
Main Query
Sub Query
Multiple-row sub-query :
3. Return more than one row.
4. Use multiple-row comparison operators.
Multi-column sub-query:
5. A multiple-column
subquery returns more than one column.
6. Column comparisons in multi-column sub-query can be pairwise or nonpairwise.
Single-Row Sub-queries
• Returns only one row
• Use single-row comparison operators
Operator Meaning
= Equal To
> Greater Than
>= Greater Than or Equal To
< Less Than
<= Less Than or Equal To
<> Not equal to
Executing Single-Row Sub-queries
SELECT First_name, job_id,salary
FROM employees
WHERE job_id= ST_CLERK
(SELECT job_id
FROM employees
WHERE employee_id=133)
AND salary >
(SELECT salary 2400
FROM employees
WHERE employee_id=135)
FIRST_NAME JOB_ID SALARY
Julia ST_CLERK 3200
Irene ST_CLERK 2700
Laura ST_CLERK 3300
….. ….. …..
Using Group Functions in a Sub-query
ERROR:
ORA – 01427:single-row sub-query returns more than
one row.
No rows selected
Multiple-Row Sub-queries
• Return more than one row.
• Use multiple-row comparison operators.
Operator Meaning
IN Equal To any member in the list
ANY Compare value to each value
returned by the sub-query
ALL Compare value to every value
returned by the sub-query.
Using ANY Operator in
Multiple-Row Sub-queries
SELECT employee_id, First_name, job_id
FROM employees
WHERE salary > ANY
(SELECT salary
FROM employees
WHERE job_Id = ‘SA_MAN’);
EMPLOYEE_ID FIRST_NAME JOB_ID
100 Steven AD_PRES
102 Lex AD_VP
146 Karen SA_MAN
201 Michael MK_MAN
108 Nancy FI_MGR
….. ….. ……
Using ALL Operator in Multiple-Row
Sub-queries
SELECT employee_id, First_name, job_id
FROM employees
WHERE salary > ALL
(SELECT avg(salary)
FROM employees
GROUP BY department_id);