A PostgreSQL IN záradékkal való munkavégzés megértése
A PostgreSQL-ben az IN záradékot és a WHERE záradékot használja a kimenet szűrésére egy értéklistával való összehasonlítással, és az eredmény egy logikai érték.
Íme a használandó szintaxis:
érték IN (érték1, érték2, érték_n);
Az adott szintaxis felveszi az értéket, és összeveti az érték1, érték2 és érték_n értékekkel. Ezután egy logikai értéket ad vissza, ha van egyezés. Az ellenőrzendő értékek listája bármilyen literál típusú lehet, beleértve a karakterláncokat és az egész számokat is. Emellett létrehozhat egy segédlekérdezést, például egy SELECT utasítást.
Beszéljük meg a PostgreSQL IN operátor használatának különböző módjait.
1. Munka egy segédlekérdezéssel
Ahogy korábban említettük, az ellenőrzendő érték lehet egy olyan segédlekérdezés, amely egy lekérdezési utasítás, például a SELECT segítségével kinyeri az értékeket. Így lekérdezhet egy táblázatot egy adott oszlop értékeinek ellenőrzéséhez. Példánkhoz használjuk a következő táblázatot:
Tegyük fel, hogy ellenőrizni akarjuk az összes ügyfelet, akiknek az „order_id” értéke a lekérdezés szakaszban megadott értékek bármelyike lehet. Utasításunk első részeként hozzáadjuk a célértéket, majd a WHERE záradékot használjuk az IN záradékkal együtt a lekérdezés létrehozásához.
Így jelenik meg a lekérdezésünk:
A PostgreSQL ellenőrzi az „order_id” oszlopot a „customers” táblában, és visszaadja az összes olyan rekordot, amelynek „order_id” értéke megegyezik a zárójelben megadottak bármelyikével.
Először egy egész értéklistát használtunk. Ellenőrizhetjük a húrok alapján is. Vegye figyelembe, hogy ha az összes megadott karakterlánc nem egyezik a célértékkel, a rendszer semmit sem ad vissza. A következő példa néhány olyan karakterláncot tartalmaz, amelyek nem szerepelnek a táblázatunkban. Az ilyen karakterláncok kimaradnak, és csak a megfelelő karakterláncok jelennek meg a következő kimenetben:
2. Az IN(SELECT) használata
Előfordulhat, hogy az értéklista kézi megadása nem működik. Dönthet úgy, hogy egy SELECT utasítást használ az értékek listájának lekéréséhez a táblából, és ezek segítségével ellenőrzi a célértéket. Adatbázisunkhoz hozzáadva a következő táblát, az előző „ügyfelek” táblával kombinálhatjuk az allekérdezés elkészítéséhez:
Tegyük fel, hogy csak akkor szeretnénk megjeleníteni az „orders” tábla rekordjait, ha a célérték (order_id) a „customers” táblában szerepel. Itt a „customers.order_id” oszlop az értéklistánk, és ennek értékeit összevetjük az „orders.order_id” oszlopban található értékekkel.
Ebben az esetben csak három bejegyzés felel meg a keresésnek, és ezt kapjuk az IN(SELECT) PostgreSQL záradék kimeneteként.
3. Munka a NOT IN PostgreSQL záradékkal
Az előző paranccsal kiválaszthatjuk a többi érték megjelenítését, amelyek nem egyeznek a célértékkel. Ehhez az IN záradékkal ellentétben az ellenkezőjét tesszük. Ezért tagadjuk a NOT IN parancsot.
Így írjuk meg új parancsunkat:
Figyeljük meg, hogy más kimenetet kapunk, mint amit a 2. példában kaptunk. Ez azért van, mert az IN záradék helyett a NOT IN-vel dolgozunk.
Ideális esetben bármikor hozzáadhatja a NOT értéket, amikor meg akarja tagadni a PostgreSQL IN záradékkal kapott eredményeket. Az alkalmazások száma végtelen. Ha szeretné ellenőrizni az értékeket, és gyorsan látni szeretné az egyezést, az IN záradék a legjobb barátja.
Következtetés
Az IN záradék a WHERE záradékkal együttműködve ellenőrzi a célértéket egy értéklistával. Az IN záradék egy logikai értéket ad vissza, amely megerősíti, hogy a célérték egyezik-e a megadott értékek listájában. Megadhatja az értékeket literálként, vagy a SELECT utasítással létrehozhat egy használható részlekérdezést. Három példát mutattunk be a PostgreSQL IN záradék használatára. Remélhetőleg ez betekintést adott a PostgreSQL IN záradékkal való együttműködés megértéséhez.