Antrinės SQL užklausos

Svarbu :  Šis straipsnis išverstas naudojant mašininį vertimą, žr. atsakomybės atsisakymą. Su šio straipsnio versija anglų kalba galite susipažinti čia .

Antrinė užklausa yra sakinys SELECT, įdėtas į sakinį SELECT, SELECT...INTO, INSERT...INTO, DELETE, UPDATE arba į kitą antrinę užklausą.

Sintaksė

Kurdami antrinę užklausą, galite naudoti tris sintaksės formas:

palyginimas [ANY | ALL | SOME] (sql_sakinys)

išraiška [NOT] IN (sql_sakinys)

[NOT] EXISTS (sql_sakinys)

Antrinė užklausa yra sudaryta iš šių dalių:

Dalis

Aprašas

palyginimas

išraiška ir lyginimo operatorius, kuris lygina išraišką su antrinės užklausos rezultatais.

išraiška

Išraiška, kuriai ieškomas antrinės užklausos rezultatų rinkinys.

sql_sakinys

Sakinys SELECT, atitinkantis tokį patį formatą ir taisykles kaip ir bet koks kitas sakinys SELECT. Jis turi būti įterptas į lenktinius skliaustus.


Pastabos

Antrinę užklausą galite naudoti vietoje laukų sąrašo išraiškos, esančios sakinyje SELECT ar sąlygoje WHERE arba HAVING. Antrinėje užklausoje galite naudoti sakinį SELECT, kad pateiktumėte vienos ar daugiau tam tikrų reikšmių rinkinį, kuris bus įvertintas sąlygos WHERE arba HAVING išraiškoje.

Naudokite sąlygas ANY arba SOME, kurios yra sinonimai, kad gautumėte pagrindinės užklausos įrašus, atitinkančius lyginimo sąlygas su bet kuriais antrinėje užklausoje gautais įrašais. Šiame pavyzdyje grąžinami visi produktai, kurių vieneto kaina yra didesne už bet kurio produkto, parduodamo su 25 procentų arba didesne nuolaida:

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

Naudokite sąlygą ALL, jei norite gauti tik tuos pagrindinės užklausos įrašus, kurie atitinka lyginimo sąlygas su visais antrinėje užklausoje gautais įrašais. Jei ankstesniame pavyzdyje sąlygą ANY pakeistumėte į sąlygą ALL, užklausa grąžintų tik tuos produktus, kurių vieneto kaina yra didesnė už visų produktų, parduodamų su 25 procentų arba didesne nuolaida. Tai kur kas labiau apriboja.

Naudokite sąlygą IN, jei norite gauti tik tuos pagrindinės užklausos įrašus, kurių reikšmė lygi antrinės užklausos įrašo reikšmei. Šiame pavyzdyje grąžinami visi produktai, parduodami su 25 procentų arba didesne nuolaida:

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

Priešingai, galite naudoti sąlygą NOT IN, kad gautumėte tik tuos pagrindinės užklausos įrašus, kurių nė viena reikšmė nėra lygi antrinės užklausos įrašo reikšmei.

Naudokite sąlygą EXISTS (su pasirinktiniu rezervuotu žodžiu NOT) teisinga/klaidinga (true/false) palyginimuose, kad nustatytumėte, ar antrinė užklausa grąžina įrašus.

Lentelės pavadinimas pseudonimus galite naudoti antrinėje užklausoje nurodyti už į antrinės užklausos sąlyga from lentelės. Pateiktame pavyzdyje pateikiama darbuotojus, kurių darbo užmokesčio yra lygi arba didesnė nei vidutinis užmokesčio visų darbuotojų su tuo pačiu pavadinimu darbo vardus. Lentelė darbuotojai pateikiamas pseudonimą "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;

Anksčiau pateiktame pavyzdyje rezervuotasis žodis AS yra pasirinktinis.

Kryžminės užklausos leidžiami keli antrines užklausas – būtent, kaip sąlygas (tie Sąlygoje WHERE). Kryžminės užklausos neleidžiama antrines užklausas kaip išvestis (ir PASIRINKITE sąrašas).



Pastaba : Mašininio vertimo atsakomybės atsisakymas: Šis straipsnis išverstas naudojant kompiuterinę sistemą be žmogaus įsikišimo. „Microsoft“ pateikia šiuos mašininius vertimus norėdama padėti anglų kalbos nesuprantantiems vartotojams perskaityti turinį apie „Microsoft“ produktus, paslaugas ir technologijas. Šis straipsnis išverstas mašininio vertimo būdu, todėl jame gali būti žodyno, sintaksės ar gramatikos klaidų.

Tobulinkite savo įgūdžius
Ieškoti mokymo
Pirmiausia gaukite naujų funkcijų
Prisijunkite prie „Office Insider“ dalyvių

Ar ši informacija buvo naudinga?

Dėkojame už jūsų atsiliepimus!

Dėkojame už jūsų atsiliepimą! Panašu, kad gali būti naudinga jus sujungti su vienu iš mūsų „Office“ palaikymo agentų.

×