PostgreSQL WHERE EXISTS Query

PostgreSQL: where EXISTS záradék használata

ha bármely SQL lekérdezést egy másik SQL lekérdezésen belül használnak, akkor azt subquery-nek hívják. A bonyolult lekérdezés könnyen megírható, ha egy nagy lekérdezést több alkeresésre osztunk. Az EXISTS záradékot egy SQL utasításban egy al lekérdezéssel használják. Az EXISTS kimenete az alkérdés által visszaadott rekordok számától függ, de nem függ a rekordok értékeitől. Az EXISTS eredménye igaz lesz, ha a társított alkérdezés legalább egy sort ad vissza. Hogyan használhatja az EXISTS és NOT EXISTS záradékot a select, insert, update and delete utasításokban, ez a bemutató különböző példákkal mutatja be.

létezik záradék szintaxis:

válassza a col1, col2, col3 lehetőséget…..
FROM table_name1
ahol létezik (válasszon 1
FROM
table_name2
WHERE col1 = table_name1.col1);

hozzon létre három táblát, a cég, az elemek és az ügyfelek nevét, és helyezzen be néhány adatot. Futtassa a következő select lekérdezést a táblák tartalmának megjelenítéséhez.

válasszon * a vállalattól;
válasszon * a termékek közül;
válasszon * ügyfelek közül;

példa-1: EXISTS záradék használata a

(a) exists

SELECT lekérdezésben a következő lekérdezés a vállalati tábla alapján lekéri a rekordokat az elemtáblából. Az alkérdezés a vállalati tábla összes rekordját megkeresi, ahol a vállalati tábla company_id értéke megegyezik az elemek táblájának company_id-jével, és a telefon mező értéke nem üres. A vállalati táblában van egy rekord, amely nem rendelkezik telefonszámmal, és ez a rekord kihagyásra kerül a kimenetből.

válassza item_id, név, mennyiség
a tételek
ahol létezik (válassza 1
a cég
ahol elemeket.company_id = vállalat.cég_azonosító és társaság.telefon<>”);

kimenet:

az LG rekordja nem tartalmaz telefonbejegyzést a vállalati táblázatban. Tehát nem jelenik meg a kimeneten.

(b) nem létezik

nem létezik záradék ellentétes az létezik záradékkal. A következő lekérdezés lekéri ezeket a rekordokat az elemtáblából, amikor az alkérdezés false értéket ad vissza.

válassza item_id, név, mennyiség
a tételek
ahol nem létezik (válassza 1
a cég
ahol elemeket.company_id = vállalat.cég_azonosító és társaság.website_url is NULL);

kimenet:

nincs olyan rekord a vállalati táblában, ahol a website_url értéke NULL. Tehát a subquery kimenete hamis az összes rekord esetében, és az elemek tábla összes rekordja lekérésre kerül.

példa-2: Az EXISTS záradék használata a

beszúrási lekérdezésben a következő beszúrási lekérdezés szerint az adatok akkor kerülnek beillesztésre az elemtáblába, ha mind a vállalat, mind az ügyfelek tábláinak company_id-je egyenlő.

beszúrása tételek
(company_id)
SELECT company_id
az ügyfelek
ahol létezik (sELECT 1
a cég,ügyfelek
ahol az ügyfelek.company_id = vállalat.cég_azonosító);

kimenet:

a company_id-nek három bejegyzése van az ügyfelek táblájában, amelyek értéke 1 és 2. Tehát a subquery háromszor visszatér true értékre, és három rekord kerül beillesztésre.

futtassa a select lekérdezést az elemek tartalmának ellenőrzéséhez.

példa-3: EXISTS záradék használata a

frissítési lekérdezésben a következő lekérdezés frissíti az elemek rekordjait, ahol a company_id értéke 1, és az alkérdezés értéke true.

elemek frissítése
SET name= ‘Nokia’
ahol company_id=1 és létezik (válasszon 1
elemek közül
ahol name= ‘nincs hozzárendelve’);

kimenet:

itt az alkérdezés háromszor igaz lesz, a company_id pedig három rekord esetében 1. A frissítési lekérdezés végrehajtása után három rekord frissül.

futtassa a select lekérdezést az elemek tartalmának ellenőrzéséhez.

példa-4: EXISTS záradék használata a

DELETE lekérdezésben a következő lekérdezés törli azokat az elemtáblázat rekordokat, ahol a company_id értéke 1, és az alkérdezés értéke true.

törlés azokból az elemekből
ahol company_id=1 és létezik (válassza ki az 1
elemet
ahol name= ‘nincs hozzárendelve’);

kimenet:

három rekord van a company_id 1 értékével, és egy rekord neve ‘Not Assign’. Tehát a feltétel háromszor igaz lesz, és három rekordot töröl az elemek táblából.

futtassa a select lekérdezést az elemek tartalmának ellenőrzéséhez.

remélem, hogy világos képet kap az EXISTS záradék használatáról az SQL lekérdezésben, miután elolvasta ezt az oktatóanyagot.

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.