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:

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);

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:

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:

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:

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
Leave a Reply