SQL apakšvaicājumi

Svarīgi!:  Šis raksts ir mašīntulkots, skatiet atrunu. Lūdzu, skatiet šī raksta versiju angļu valodā šeit jūsu informācijai.

Apakšvaicājums ir priekšraksts SELECT, kas ligzdots priekšrakstā SELECT, SELECT...INTO, INSERT...INTO, DELETE vai UPDATE vai citā apakšvaicājumā.

Sintakse

Lai izveidotu apakšvaicājumu, var lietot trīs sintakses formas:

salīdzinājums [ANY | ALL | SOME] (sql_priekšraksts)

izteiksme [NOT] IN (sql_priekšraksts)

[NOT] EXISTS (sql_priekšraksts)

Apakšvaicājumam ir šādas daļas:

Daļa

Apraksts

salīdzinājums

izteiksme un salīdzinājuma operators, kas izteiksmi salīdzina ar apakšvaicājuma rezultātiem.

izteiksme

Tā izteiksme, kurai tiek meklēta apakšvaicājuma rezultātu kopa.

sql_priekšraksts

Priekšraksts SELECT, ar to pašu formātu un kārtulām, kādas ir ikvienam citam priekšrakstam SELECT. Priekšraksts SELECT ir jāliek iekavās.


Piezīmes

Apakšvaicājumu var lietot priekšraksta SELECT lauka sarakstā vai klauzulā WHERE vai HAVING izteiksmes vietā. Apakšvaicājumā priekšraksts SELECT ir jālieto, lai norādītu vienu vai vairākas konkrētu vērtību kopas, kuras novērtēt klauzulas izteiksmē WHERE vai HAVING.

Predikāti ANY vai SOME, kas ir sinonīmi, jālieto, lai izgūtu ierakstus no galvenā vaicājuma, kas apmierina salīdzinājumu ar visiem ierakstiem, kas izgūti no apakšvaicājuma. Nākamajā piemērā tiek atgriezti visi tie produkti, kuru vienības cena ir lielāka par ikviena tāda produkta cenu, kas tiek pārdots ar 25 procentu vai lielāku atlaidi:

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

Predikātu ALL ir jālieto, lai izgūtu tikai tos galvenā vaicājuma ierakstus, kas apmierina salīdzinājumu ar visiem tiem ierakstiem, kas tiek izgūti no apakšvaicājuma. Iepriekšējā piemērā predikātu ANY nomainot ar predikātu ALL, vaicājums atgriež tikai tos produktus, kuru vienības cena ir lielāka par visu to produktu cenu, kas tiek pārdoti ar 25 procentu vai lielāku atlaidi. Šis predikāts ir ierobežojošāks.

Predikāts IN ir jālieto, lai izgūtu tikai tos galvenā vaicājuma ierakstus, kuriem kādā apakšvaicājuma ierakstā ir vienāda vērtība. Šajā piemērā tiek atgriezti visi tie produkti, kuriem ir 25 procentu vai lielāka atlaide:

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

Predikātu NOT IN var lietot, lai izgūtu tikai tos galvenā vaicājuma ierakstus, kuriem apakšvaicājuma ierakstos nav vienādas vērtības.

Predikāts EXISTS (kopā ar neobligāto vārdu NOT) ir jālieto salīdzinājumos Patiess/aplams, lai noteiktu, vai apakšvaicājums atgriež kādu ierakstu.

Varat arī izmantot tabulu nosaukumu aizstājvārdus apakšvaicājumā atsaukties uz tabulas uzskaitītas klauzulā FROM ārpus apakšvaicājumu. Šajā piemērā tiek atgriezta darbiniekus, kuru algas ir vienāds vai lielāks par vidējo algu visus darbiniekus ar vienādu amats nosaukumus. Tabula Employees ir piešķirts aizstājvārds "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;

Iepriekšējā piemērā rezervētais vārds AS ir neobligāts.

Daži Apakšvaicājumi atļauts krustvaicājumi — konkrēti, kā predikātu (tiem, kas klauzulu WHERE). Krustvaicājumi Apakšvaicājumi kā izvadi (tiem IZVĒLIETIES sarakstā) nav atļauta.



Piezīme.: Mašīntulkošanas atruna. Šo rakstu ir tulkojusi datorsistēma bez cilvēka iejaukšanās. Microsoft piedāvā šos mašīntulkojumus, lai palīdzētu angliski nerunājošajiem lietotājiem izmanot saturu par Microsoft produktiem, pakalpojumiem un tehnoloģijām. Tā kā šis raksts ir mašīntulkots, tajā var būt leksikas, sintakses un gramatikas kļūdas.

Paplašiniet savas prasmes
Iepazīties ar apmācību
Esiet pirmais, kas saņem jaunās iespējas
Pievienoties Office Insider programmai

Vai šī informācija bija noderīga?

Paldies par jūsu atsauksmēm!

Paldies par atsauksmēm! Šķiet, ka varētu būt noderīgi sazināties ar kādu no mūsu Office atbalsta aģentiem.

×