Articles

SQL Korrelált Subquery

összefoglaló: ebben az oktatóanyagban, akkor megtudjuk, az SQL Korrelált subquery amely egy alkerészet, amely értékeket használ a külső lekérdezés.

Bevezetés Az SQL Korrelált alkeretbe

kezdjük egy példával.

lásd a következőemployees táblázatot a mintaadatbázisban:

SQL Korrelált Subquery: Alkalmazotti táblázat

a következő lekérdezés olyan alkalmazottakat talál, akiknek fizetése meghaladja az összes alkalmazott átlagos fizetését:

SELECT employee_id, first_name, last_name, salaryFROM employeesWHERE salary > (SELECT AVG(salary) FROM employees);
SQL Subquery example

ebben a példában az alkeretet a WHERE záradékban használják. Vannak olyan pontok, amelyeket ebből a lekérdezésből láthat:

először végrehajthatja azt az alkeretet, amely az összes alkalmazott átlagos fizetését önállóan adja vissza.

SELECT AVG(salary)FROM employees;

másodszor, az adatbázis-rendszernek csak egyszer kell értékelnie az alkeretet.

harmadszor, a külső lekérdezés az alkeretből visszaküldött eredményt használja. A külső lekérdezés az érték alkeretétől függ. Az alkönyvtár azonban nem függ a külső lekérdezéstől. Néha ezt az alkeretet egy egyszerű alkeretnek nevezzük.

ellentétben egy sima alkerettel, a korrelált alkerület egy alkerület, amely a külső lekérdezés értékeit használja. Továbbá, egy Korrelált alkeretet lehet értékelni egyszer minden sorban által kiválasztott külső lekérdezés. Emiatt a lekérdezés, amely egy Korrelált alkeretet használ, lassú lehet.

a korrelált alkeretet ismétlődő alkeretként vagy szinkronizált alkeretként is ismert.

SQL Korrelált subquery példák

nézzünk még néhány példát a korrelált alkeretekről, hogy jobban megértsük őket.

SQL Korrelált alkérdés a WHERE pont példájában

a következő lekérdezés minden olyan alkalmazottat megtalál, akinek fizetése magasabb, mint a részlegeik alkalmazottainak átlagkeresete:

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;

itt van a kimenet:

SQL Correlated Subquery Example

ebben a példában a külső lekérdezés:

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

subquery:

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

minden alkalmazott esetében az adatbázis-rendszernek egyszer végre kell hajtania a Korrelált Alkeretet, hogy kiszámítsa az alkalmazottak átlagos fizetését a jelenlegi alkalmazott osztályán.

SQL Korrelált alkeretet a SELECT záradék példa

a következő lekérdezés visszatér az alkalmazottak és az átlagos fizetés az összes alkalmazott a részlegek:

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;

a kimenet:

SQL korrelált a

minden alkalmazott esetében az adatbázis-rendszernek egyszer végre kell hajtania a korrelált alkeretet, hogy kiszámítsa az átlagos fizetést a munkavállaló osztályán.

SQL Korrelált alkeretet létezik operátor példa

gyakran használunk Korrelált alkeretet a EXISTS operátorral. Például, a következő lekérdezés mind a munkavállalók, akik nem eltartottak:

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;

A következő kép azt mutatja, hogy a kimenet:

SQL Összefügg Subquery-val LÉTEZIK üzemeltető

ez A bemutató, tanultál az SQL összefügg subquery meg, hogyan kell alkalmazni a forma összetett lekérdezés.

  • hasznos volt ez a bemutató ?
  • YesNo