Apakšvaicājums ir priekšraksts SELECT, kas ligzdots atlasē atlasiet... INTO, INSERT... , Dzēst vai atjaunināt priekšrakstu vai citu apakšvaicājumu.

Sintakse

Varat izmantot trīs sintakses formas, lai izveidotu apakšvaicājumu:

salīdzinājums [jebkurš | VISI | DAŽI] (SQL priekšraksts)

izteiksme [Not] in (SQL priekšraksts)

NAV PASTĀV (SQL priekšraksts)

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

Daļa

Apraksts

salīdzinājums

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

izteiksme

Izteiksme, kurai tiek meklēts apakšvaicājuma rezultātu kopa.

sql priekšraksts

Priekšraksts SELECT, ievērojot to pašu formātu un kārtulas, ko jebkurš cits priekšraksts SELECT. Tas ir jāiekļauj iekavās.


Piebildes

Varat izmantot apakšvaicājumu izteiksmju vietā priekšraksta SELECT lauku sarakstā vai klauzulā WHERE vai HAVING. Apakšvaicājumā Izmantojiet priekšrakstu SELECT, lai norādītu vienas vai vairāku noteiktu vērtību kopu, kas ir jānovērtē klauzulas WHERE vai HAVING izteiksmē.

Izmantojiet jebkuru predikātu or, kas ir sinonīms, lai izgūtu ierakstus no galvenā vaicājuma, kas atbilst salīdzinājumam ar jebkuriem apakšvaicājumā izgūtajiem ierakstiem. Tālāk sniegtajā piemērā tiek atgriezti visi produkti, kuru vienības cena ir lielāka par jebkuru produktu, kas pārdots ar 25 procentu vai lielāku atlaidi.

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

Izmantojiet predikātu ALL, lai izgūtu tikai tos galvenā vaicājuma ierakstus, kas atbilst salīdzinājumam ar visiem apakšvaicājumā izgūtajiem ierakstiem. Ja iepriekšējā piemērā ir mainīts viss, vaicājums atgrieztu tikai tos produktus, kuru vienības cena ir lielāka par to produktu skaitu, kas pārdoti par 25 procentu vai lielāku atlaidi. Tas ir daudz stingrāks.

Izmantojiet predikātu IN, lai izgūtu tikai tos pamatvaicājuma ierakstus, kuriem daļā apakšvaicājumā ir vienāds lielums. Tālāk sniegtajā piemērā tiek atgriezti visi produkti ar 25 procentu vai lielāku atlaidi.

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

Savukārt varat izmantot NOT IN, lai izgūtu tikai tos galvenā vaicājuma ierakstus, kuriem apakšvaicājumā nav iekļauta vienādības vērtība.

Izmantojiet predikātu EKSISTĒšana (ar neobligātu nerezervētu vārdu) patiesajā/aplamā salīdzinājumā, lai noteiktu, vai apakšvaicājums atgriež ierakstus.

Apakšvaicājumā varat arī izmantot tabulas nosaukumu aizstājvārdus, lai atsauktos uz tabulām, kas norādītas klauzulā FROM, kas atrodas ārpus apakšvaicājuma. Šajā piemērā tiek atgriezts to darbinieku vārdi, kuru alga ir vienāda ar vai lielāka par vidējo algu visiem darbiniekiem, kuriem ir vienāds amats. Tabulā Employees ir dots 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 nav obligāts.

Daži Apakšvaicājumi ir atļauti krustvaicājumos, jo īpaši kā predikāti (kas ir klauzulā WHERE). Apakšvaicājumi par izvadi (sarakstā atlase) nav atļauti krustvaicājumos.



Vai nepieciešama papildu palīdzība?

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

Vai šī informācija bija noderīga?

Cik lielā mērā esat apmierināts ar tulkojuma kvalitāti?
Kas ietekmēja jūsu pieredzi?

Paldies par jūsu atsauksmēm!

×