SQL segédlekérdezések

Megjegyzés:  Szeretnénk, ha minél gyorsabban hozzáférhetne a saját nyelvén íródott súgótartalmakhoz. Ez az oldal gépi fordítással lett lefordítva, ezért nyelvtani hibákat és pontatlanságokat tartalmazhat. A célunk az, hogy ezek a tartalmak felhasználóink hasznára váljanak. Kérjük, hogy a lap alján írja meg, hogy hasznos volt-e az Ön számára az itt található információ. Az eredeti angol nyelvű cikket itt találja .

A segédlekérdezés egy SELECT, SELECT...INTO, INSERT...INTO, DELETE vagy UPDATE utasításba, illetve másik segédlekérdezésbe beágyazott SELECT utasítás.

Szintaxis

Segédlekérdezést háromféle szintaxissal hozhat létre:

összehasonlítás [ANY | ALL | SOME] (sql-utasítás)

kifejezés [NOT] IN (sql-utasítás)

[NOT] EXISTS (sql-utasítás)

Egy segédlekérdezés a következő részekből áll:

Rész

Leírás

összehasonlítás

Egy kifejezés és egy összehasonlító operátor, amely a kifejezést a segédlekérdezés eredményével hasonlítja össze.

kifejezés

Egy kifejezés, amelynek alapján a segédlekérdezés eredményhalmazát keresi.

sql-utasítás

SELECT utasítás, amely az egyéb SELECT utasítások formátumát és szabályait követi. Zárójelbe kell tenni.


Megjegyzés

Allekérdezést SELECT utasítás mezőlistájában, illetve WHERE vagy HAVING záradékban szereplő kifejezés helyett használhatunk. Allekérdezésben SELECT utasítással adhatjuk meg az(oka)t a konkrét érték(ek)et, amely(ek)et a WHERE vagy a HAVING záradékkal kiértékelünk.

A főlekérdezésben az egymással rokon értelmű ANY vagy SOME kijelentésekkel kérhetjük le azokat a rekordokat, amelyek eleget tesznek a megadott összehasonlító feltételnek az allekérdezés valamely rekordjával szemben. A következő példa azokat a termékeket adja vissza, amelyek egységára nagyobb, mint bármely, legalább 25% árengedménnyel eladott termék egységára:

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

Az ALL kijelentés használatával választhatjuk ki a fő lekérdezésben azokat a rekordokat, amelyek kielégítik az összehasonlító feltételt az allekérdezés összes rekordjával szemben. Ha a fenti példában az ANY helyett ALL kijelentést használnánk, a lekérdezés csak azokat a termékeket adná vissza, amelyek egységára nagyobb minden olyan termék egységáránál, amelyet legalább 25% engedménnyel értékesítettek. Ez sokkal szigorúbb feltételt jelent.

Az IN kijelentés segítségével a főlekérdezés eredményéből kiválaszthatjuk azokat a rekordokat, amelyekhez az allekérdezés eredményében azonos értékkel rendelkező rekordokat találunk. A következő példában kiválasztunk minden olyan terméket, amelyet legalább 25% engedménnyel értékesítettek:

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

Fordítva, a NOT IN segítségével kiválaszthatjuk a főlekérdezés azon rekordjait, amelyekhez az allekérdezés egyetlen rekordja sem tartalmaz azonos értéket.

Az igaz/hamis összehasonlításokban az EXISTS predikátummal és a hozzáfűzhető NOT foglalt kulcsszóval határozhatja meg, hogy a segédlekérdezés egyáltalán visszaad-e rekordokat.

Kulcsszóval a segédlekérdezés kívül a FROM záradékban szereplő táblák olvassa el a segédlekérdezés táblaaliasokat nevét is használhatja. Az alábbi példa eredménye az alkalmazottak, akinek a fizetése egyenlő vagy nagyobb, mint ugyanazt a beosztás rendelkező összes alkalmazottak átlagos fizetésének nevét. Az alkalmazottak tábla "T1" alias számítható ki:

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

A fenti példában az AS foglalt szó használata nem kötelező.

Kereszttáblás lekérdezések bizonyos segédlekérdezések engedélyezése – kifejezetten, mint predikátumok (amelyek a WHERE záradékban). A kereszttáblás lekérdezések nem használhatók segédlekérdezések ezt az eredményt (amelyek a SELECT listában).



Office-jártasság bővítése
Oktatóanyagok megismerése
Új szolgáltatások listájának lekérése
Részvétel az Office Insider programban

Hasznos volt az információ?

Köszönjük a visszajelzését!

Köszönjük visszajelzését. Jobbnak látjuk, ha az Office egyik támogatási szakemberéhez irányítjuk.

×