Correlated subquery

Correlated subquery

In a SQL database query, a correlated sub-query is a sub-query (a query nested inside another query) that uses values from the outer query in its WHERE clause. The sub-query is evaluated once for each row processed by the outer query.

Here is an example for a typical correlated sub-query. In this example we are finding the list of employees (employee number and names) having more salary than the average salary of all employees in that employee's department.

 SELECT employee_number, name
 FROM employee AS e1
 WHERE salary > (SELECT avg(salary)
    FROM employee
    WHERE department = e1.department);

In the above query the outer query is,

 SELECT employee_number, name
 FROM employee AS e1
 WHERE salary >

And the inner query is,

 (SELECT avg(salary)
    FROM employee
    WHERE department = e1.department);

In the above nested query the inner query has to be executed for every employee as the department will change for every row. Hence the average salary will also change.

The effect of correlated sub-queries can also be obtained using outer Joins.

See also

External links



Wikimedia Foundation. 2010.

Игры ⚽ Нужно решить контрольную?

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”