PostgreSQL IN-klausul

Postgresql In Klausul



Det finns massor av klausuler som du kan använda i PostgreSQL. IN-satsen är en av dessa klausuler, och den har många fördelar när du förstår hur man använder den, särskilt när den kombineras med WHERE-satsen. IN-satsen fungerar huvudsakligen med SELECT-satsen för att filtrera hur du vill att frågan ska köras. När den körs kontrollerar IN-satsen den angivna listan för att se om den matchar kriterierna och matar ut de matchande värdena.

Förstå hur man arbetar med PostgreSQL IN-klausul

I PostgreSQL använder du IN-satsen med WHERE-satsen för att filtrera utdata genom att kontrollera mot en lista med värden, och resultatet är ett booleskt värde.

Här är syntaxen att använda:







värde IN (värde1, värde2, värde_n);

Den givna syntaxen tar värdet och kontrollerar det mot värde1, värde2 och värde_n. Den returnerar sedan en boolesk om det finns en matchning. Listan över värden att kontrollera mot kan vara av vilken bokstavlig typ som helst inklusive strängar och heltal. Dessutom kan du skapa en underfråga som en SELECT-sats.



Låt oss diskutera de olika sätten att använda PostgreSQL IN-operatorn.



1. Arbeta med en underfråga

Som vi nämnde tidigare kan värdet att kontrollera mot vara en underfråga som extraherar värdena med hjälp av en frågesats som SELECT. På så sätt kan du fråga en tabell för att kontrollera värdena för en viss kolumn. Låt oss använda följande tabell för vårt exempel:





Anta att vi vill kontrollera alla kunder vars 'order_id' kan vara något av värdena som anges i frågeavsnittet. Vi lägger till målvärdet som den första delen av vårt uttalande och använder sedan WHERE-satsen med IN-satsen för att skapa frågan.



Så här ser vår fråga ut:

PostgreSQL kontrollerar kolumnen 'order_id' i tabellen 'kunder' och returnerar alla poster vars 'order_id' matchar någon av de som vi angav inom parentes.

För det första använde vi fallet med en heltalslista med värden. Vi kan också kolla mot strängarna. Observera att om alla strängar som du anger inte matchar målvärdet returneras ingenting. Följande exempel innehåller några strängar som inte finns i vår tabell. Sådana strängar kommer att hoppas över och endast de matchande strängarna kommer att visas i följande utdata:

2. Arbeta med IN(SELECT)

Ibland kanske det inte fungerar att manuellt ange värdelistan. Du kan välja att använda en SELECT-sats för att hämta en lista med värden från din tabell och använda dem för att kontrollera mot målvärdet. Genom att lägga till följande tabell i vår databas kan vi kombinera den med den tidigare 'kunder'-tabellen för att göra vår underfråga:

Låt oss säga att vi bara vill visa posterna från 'order'-tabellen om målvärdet (order_id) finns i 'kunder'-tabellen. Här är kolumnen 'customers.order_id' vår lista över värden och vi kontrollerar dess värden mot dem i kolumnen 'orders.order_id'.

I det här fallet matchar endast tre poster sökningen och det är vad vi får som utdata för vår IN(SELECT) PostgreSQL-klausul.

3. Arbeta med NOT IN PostgreSQL-klausulen

Med hjälp av föregående kommando kan vi välja att visa de andra värden som inte matchar målvärdet. För det gör vi motsatsen till vad IN-klausulen gör. Därför förnekar vi kommandot att vara INTE IN.

Så här skriver vi vårt nya kommando:

Lägg märke till att vi får en annan utdata än de vi fick i exempel 2. Det beror på att vi arbetar med NOT IN istället för IN-satsen.

Helst kan du lägga till NOT när du vill förneka resultaten som du får med PostgreSQL IN-klausulen. Ansökningarna är oändliga. När du vill kontrollera värdena och se att de matchar snabbt, är IN-satsen din bästa vän.

Slutsats

IN-satsen fungerar med WHERE-satsen för att kontrollera ett målvärde mot en lista med värden. IN-satsen returnerar en Boolean som bekräftar om målvärdet har en matchning i listan med värden som du angav. Du kan ange värdena som bokstaver eller använda SELECT-satsen för att skapa en underfråga att använda. Vi har gett tre exempel på hur du kan använda PostgreSQL IN-klausulen. Förhoppningsvis gav det dig insikter om hur du arbetar med PostgreSQL IN-klausulen.