Articles

SQL Correlated Subquery

Podsumowanie: w tym samouczku dowiesz się o SQL correlated subquery, który jest subquery, który wykorzystuje wartości z zewnętrznego zapytania.

Wprowadzenie do skorelowanego podquery SQL

zacznijmy od przykładu.

zobacz następującą tabelęemployees w przykładowej bazie danych:

skorelowane Podquery SQL: Tabela pracowników

następujące zapytanie wyszukuje pracowników, których wynagrodzenie jest wyższe niż przeciętne wynagrodzenie wszystkich pracowników:

SELECT employee_id, first_name, last_name, salaryFROM employeesWHERE salary > (SELECT AVG(salary) FROM employees);
przykład Podquery SQL

w tym przykładzie podquery są używane w klauzuli WHERE. Jest kilka punktów, które możesz zobaczyć z tego zapytania:

najpierw możesz wykonać podzapytanie, które niezależnie Zwraca średnią pensję wszystkich pracowników.

SELECT AVG(salary)FROM employees;

Po drugie, system bazodanowy musi ocenić podquery tylko raz.

Po Trzecie, zapytanie zewnętrzne wykorzystuje wynik zwracany z zapytania podrzędnego. Zapytanie zewnętrzne zależy od wartości zapytania podrzędnego. Jednak zapytanie podrzędne nie zależy od zapytania zewnętrznego. Czasami nazywamy to podzbiorem.

w przeciwieństwie do zwykłego podzapytania, skorelowane podzapytanie jest podzapytaniem, które używa wartości z zapytania zewnętrznego. Ponadto skorelowane podzapytanie może być ocenione raz dla każdego wiersza wybranego przez zapytanie zewnętrzne. Z tego powodu zapytanie, które używa skorelowanego podzapytania, może być powolne.

skorelowane podquery są również znane jako powtarzające się podquery lub zsynchronizowane podquery.

przykłady skorelowanych pod-zapytań SQL

zobaczmy jeszcze kilka przykładów skorelowanych pod-zapytań, aby lepiej je zrozumieć.

subquery skorelowane SQL w przykładzie klauzuli WHERE

następujące zapytanie wyszukuje wszystkich pracowników, których wynagrodzenie jest wyższe niż przeciętne wynagrodzenie pracowników w ich działach:

SELECT employee_id, first_name, last_name, salary, department_idFROM employees eWHERE salary > (SELECT AVG(salary) FROM employees WHERE department_id = e.department_id)ORDER BY department_id , first_name , last_name;

oto wynik:

SQL Correlated Subquery Example

w tym przykładzie zewnętrzne zapytanie to:

SELECT employee_id, first_name, last_name, salary, department_idFROM employees eWHERE salary >...

i skorelowane subquery to:

SELECT AVG( list_price )FROM productsWHERE category_id = p.category_id

dla każdego pracownika system bazodanowy musi wykonać skorelowane Subquery raz, aby obliczyć średnią pensję pracowników w dziale obecnego pracownika.

subquery skorelowane SQL w przykładzie klauzuli SELECT

następujące zapytanie zwraca pracowników i średnie wynagrodzenie wszystkich pracowników w ich działach:

SELECT employee_id, first_name, last_name, department_name, salary, (SELECT ROUND(AVG(salary),0) FROM employees WHERE department_id = e.department_id) avg_salary_in_departmentFROM employees e INNER JOIN departments d ON d.department_id = e.department_idORDER BY department_name, first_name, last_name;

Wyjście To:

SQL Correlated subquery w klauzuli SELECT

dla każdego pracownika system bazodanowy musi wykonać skorelowane subquery raz, aby obliczyć średnią pensję przez dział pracownika.

skorelowany podquery SQL z operatorem EXISTS przykład

często używamy skorelowanego podquery z operatoremEXISTS. Na przykład, poniższe zapytanie zwraca wszystkich pracowników, którzy nie są zależni:

SELECT employee_id, first_name, last_nameFROM employees eWHERE NOT EXISTS( SELECT * FROM dependents d WHERE d.employee_id = e.employee_id)ORDER BY first_name , last_name;

poniższy rysunek pokazuje dane wyjściowe:

skorelowany Podquery SQL z istniejącym operatorem

w tym samouczku nauczyłeś się o skorelowanym podzapytaniu sql i jak go zastosować do utworzenia złożonego zapytania.

  • czy ten tutorial był pomocny ?
  • YesNo