Poddotazy SQL

Poznámka: Radi by sme vám čo najrýchlejšie poskytovali najaktuálnejší obsah Pomocníka vo vašom vlastnom jazyku. Táto stránka bola preložená automaticky a môže obsahovať gramatické chyby alebo nepresnosti. Naším cieľom je, aby bol tento obsah pre vás užitočný. Dali by ste nám v dolnej časti tejto stránky vedieť, či boli pre vás tieto informácie užitočné? Tu nájdete anglický článok pre jednoduchú referenciu.

Poddotaz je vnorené v vyberte možnosť, vyberte príkaz select... DO, VLOŽIŤ... Prehlásenie o INTO, odstránenie alebo aktualizácia alebo do iného poddotaz.

Syntax

Ak chcete vytvoriť poddotaz môžete použiť tri formuláre syntaxe:

porovnanie [VŠETKY | VŠETKY | Niektoré] (sqlstatement)

výraz [NIE] V (sqlstatement)

[NIE] Existuje (sqlstatement)

Poddotaz má tieto časti:

Časť

Popis

porovnanie

výraz a operátora porovnania, ktorá porovnáva výraz s výsledkami poddotaz.

výraz

Výraz, pre ktoré poddotaz množina výsledkov vyhľadávania.

príkaz SQL

Príkaz SELECT, po rovnaký formát a pravidlá ako ostatné príkaz SELECT. Musí byť uzavretý v zátvorkách.


Poznámky

Poddotaz môžete použiť namiesto výrazu v zozname polí príkaz SELECT, alebo ak alebo klauzula HAVING. V poddotaz, ktorý použijete príkaz SELECT poskytnúť súbor z jedného alebo viacerých zadaných hodnôt sa má vypočítať v WHERE alebo výraz klauzula HAVING.

Použite niektoré alebo všetky predikát, ktoré sú synonymá na načítanie záznamov hlavné dotazu, ktoré spĺňajú porovnanie s všetky záznamy načítané v poddotaz. Nasledujúci príklad vráti všetky produkty, ktorého jednotková cena je väčšia ako ľubovoľný produkt predal so zľavou 25% alebo viac:

SELECT * FROM Products WHERE UnitPrice > ANY (SELECT UnitPrice FROM OrderDetails WHERE Discount >= .25);

Použiť všetky predikát načítať iba tie záznamy v hlavných dotazu, vyhovujúcich porovnanie všetkých záznamov načítaných v poddotaz. Ak ste zmenili ktoréhokoľvek všetkým v predchádzajúcom príklade, dotaz vráti iba tie produkty, ktorého jednotková cena je väčšia ako všetkých predávaných so zľavou 25% alebo viac. Toto je oveľa prísnejšie.

Použiť v predikáte načítať iba tie záznamy v hlavných dotazu niektoré záznam v poddotaz obsahuje rovnakú hodnotu. Nasledujúci príklad vráti všetky produkty so zľavou 25% alebo viac:

SELECT * FROM Products WHERE ProductID IN (SELECT ProductID FROM OrderDetails WHERE Discount >= .25);

NOT IN a naopak, môžete použiť na získanie iba tie záznamy v hlavných dotazu žiaden záznam v poddotaz obsahuje rovnakú hodnotu.

Používanie EXISTS predikát (s voliteľným nie vyhradené slovo) na hodnotu true alebo false porovnania zistiť, či poddotaz vráti všetky záznamy.

Môžete použiť aj názov aliasov tabuliek v poddotaz odkazuje na tabuľky uvedené v klauzule FROM mimo poddotaz. Nasledujúci príklad vráti mená zamestnancov, ktorých platy sú rovnaké alebo väčšie ako priemernej mzdy všetkých zamestnancov s rovnakým názvom úlohy. Tabuľka zamestnanci je daný alias "T1":

SELECT LastName, FirstName, Title, Salary FROM Employees AS T1 WHERE Salary >= (SELECT Avg(Salary) FROM Employees WHERE T1.Title = Employees.Title) Order by Title;

V predchádzajúcom príklade, ako vyhradené slovo je voliteľná.

Niektoré Poddotazy sú povolené v Krížové dotazy – špecificky, ako predikáty (tie v klauzule WHERE). Poddotazy ako výstup (tie v zozname vybrať) nie sú povolené v Krížové dotazy.



Rozšírte svoje zručnosti práce s balíkom Office
Preskúmať školenie
Buďte medzi prvými, ktorí získajú nové funkcie
Pridajte sa k insiderom pre Office

Boli tieto informácie užitočné?

Ďakujeme za vaše pripomienky!

Ďakujeme vám za pripomienky. Pravdepodobne vám pomôže, ak vás spojíme s pracovníkom podpory pre Office.

×