PostgreSQL IN, ei IN esimerkkien kanssa

⚡ Älykäs yhteenveto

PostgreSQL IN-operaattori tarkistaa, onko arvo WHERE-lausekkeen sisällä olevassa luettelossa tai alikyselyssä, korvaamalla useita OR-ehtoja SELECT-, UPDATE-, INSERT- ja DELETE-lausekkeissa puhtaamman, nopeamman ja helpommin luettavamman suodatuksen aikaansaamiseksi.

  • 📋 Syntaksi: value IN (list) palauttaa arvon true, kun arvo vastaa mitä tahansa listan alkiota.
  • 🔤 Hahmoluettelot: Kirjoita tekstiarvot sulkeisiin yksittäisten lainausmerkkien sisään.
  • 🔢 Numeeriset luettelot: Vertaa numeroita suoraan ilman lainausmerkkejä saadaksesi täydelliset osumat.
  • 🚫 EI SISÄLLÄ: Palauttaa rivit, joiden arvo puuttuu annetusta listasta.
  • ⚠️ NULL-ansa: NULL NOT IN -merkin sisällä voi palauttaa äänettömästi nolla riviä.
  • 🤖 Tekoälykyselyt: Assistentit rakentavat IN-lausekkeita ja merkitsevät NULL-arvoja ja suorituskykyyn liittyviä riskejä.

PostgreSQL SISÄÄN, EI SISÄÄN esimerkkien kera

Mikä on PostgreSQL SISÄÄN?

IN-operaattoria käytetään WHERE-lausekkeessa, jonka avulla voidaan tarkistaa, onko arvo läsnä muiden arvojen luettelossa. IN-operaatio auttaa vähentämään useiden OR-ehtojen tarvetta SELECT-, UPDATE-, INSERT- tai DELETE-lausekkeissa.

Syntaksi

IN-operaattori ottaa seuraavan syntaksin:

value IN (value_1, value_2, ...)

Arvo on arvo, jota tarkistat luettelosta.

Arvo_1, arvo_2… ovat luetteloarvoja.

Jos arvo löytyy luettelosta, operaattori palauttaa tosi.

Lista voi olla joukko numeroita tai merkkijonoja tai jopa funktion tulos. SELECT-lause kuten alla:

value IN (SELECT value FROM table-name);

Suluissa oleva lause tunnetaan alikyselynä.

PostgreSQL Sisään hahmolla

Osoitetaan, kuinka voit käyttää IN-operaattoria merkkiarvojen kanssa.

Tarkastellaan seuraavaa taulukkoa:

Työntekijät:

PostgreSQL Sisään hahmolla

Suoritetaan seuraava kysely yllä olevaa taulukkoa vastaan:

SELECT * FROM Employees WHERE name IN ('James John', 'Mercy Bush', 'Kate Joel');

Se palauttaa seuraavat:

PostgreSQL IN merkkituloksen kanssa

Meillä on lista, jossa on kolme nimeä. Etsimme, löydämmekö näitä nimiä Työntekijät-taulukon nimisarakkeesta. Kate Joel -nimi löydettiin yhdestä taulukon tietueesta, ja sen tiedot palautettiin.

PostgreSQL SISÄÄN numeroilla

Katsotaanpa nyt, kuinka voimme käyttää IN-operaattoria numeeristen arvojen kanssa.

Harkitse alla olevaa hintataulukkoa:

Hinta:

PostgreSQL SISÄÄN numeroilla

Voimme suorittaa seuraavan kyselyn taulukkoa vastaan:

SELECT * FROM Price WHERE price IN (200, 308, 250, 550);

Tämä palauttaa seuraavan:

PostgreSQL Numeerisella tuloksella

Olemme luoneet luettelon, jossa on 4 numeerista arvoa. Tarkistamme, pystymmekö vastaamaan jotakin näistä arvoista Hintataulukon hintasarakkeen arvojen kanssa. Kaksi arvoa täsmättiin ja niiden tiedot palautettiin.

Käyttämällä EI-funktiota OperaTor

IN-operaattoria voidaan käyttää yhdessä NOT-operaattorin kanssa. Se palauttaa arvot, joita ei löydy määritetystä sarakkeesta. Käytämme hintataulukkoa tämän osoittamiseen.

SELECT * FROM Price WHERE price NOT IN (200, 400, 190, 230);

Tämä palauttaa seuraavat tiedot:

PostgreSQL IN Käytetään NOT-operaattoria

Olemme luoneet luettelon, jossa on 4 numeerista arvoa. Tarkistamme Hintataulukon hintasarakkeesta arvot, jotka eivät ole luettelossa. Kahta arvoa, 250 ja 300, ei löytynyt. Siksi heidän tiedot on palautettu.

pgAdminin avulla

SQL-kuoren lisäksi samat IN- ja NOT IN -kyselyt voidaan suorittaa visuaalisesti pgAdmin-käyttöliittymän kautta.

Hahmon kanssa

Suorita sama pgAdminin kautta seuraavasti:

Vaihe 1) Kirjaudu sisään pgAdmin-tilillesi.

Vaihe 2)

  1. Napsauta vasemmalla olevasta navigointipalkista Tietokannat.
  2. Napsauta Demo.

pgAdminin käyttäminen merkkien kanssa

Vaihe 3) Kirjoita kysely kyselyeditoriin:

SELECT * FROM Employees WHERE name IN ('James John', 'Mercy Bush', 'Kate Joel');

Vaihe 4) Napsauta Suorita-painiketta.

pgAdminin käyttö merkkikyselyn kanssa

Sen pitäisi palauttaa seuraavat tiedot:

pgAdminin käyttö merkkituloksen kanssa

Numeroilla

Suorita sama pgAdminin kautta seuraavasti:

Vaihe 1) Kirjaudu sisään pgAdmin-tilillesi.

Vaihe 2)

  1. Napsauta vasemmalla olevasta navigointipalkista Tietokannat.
  2. Napsauta Demo.

pgAdminin käyttö numeroiden kanssa

Vaihe 3) Kirjoita kysely kyselyeditoriin:

SELECT * FROM Price WHERE price IN (200, 308, 250, 550);

Vaihe 4) Napsauta Suorita-painiketta.

pgAdminin käyttö numeerisen kyselyn kanssa

Sen pitäisi palauttaa seuraavat tiedot:

pgAdminin käyttö numeerisen tuloksen kanssa

Käyttämällä EI-funktiota OperaTor

Suorita sama pgAdminin kautta seuraavasti:

Vaihe 1) Kirjaudu sisään pgAdmin-tilillesi.

Vaihe 2)

  1. Napsauta vasemmalla olevasta navigointipalkista Tietokannat.
  2. Napsauta Demo.

NOT-operaattorin käyttö pgAdminissa

Vaihe 3) Kirjoita kysely kyselyeditoriin:

SELECT * FROM Price WHERE price NOT IN (200, 400, 190, 230);

Vaihe 4) Napsauta Suorita-painiketta.

NOT-operaattorikyselyn käyttö pgAdminissa

Sen pitäisi palauttaa seuraavat tiedot:

NOT-operaattorin käyttö tuottaa tuloksen pgAdminissa

Lataa tässä opetusohjelmassa käytetty tietokanta

UKK

In PostgreSQL, EXISTS toimii usein nopeammin kuin IN suurissa alikyselyissä, koska se pysähtyy ensimmäiseen osumaan. Pienille, vakioille listoille IN on yksinkertainen ja tehokas. Testaa molempia EXPLAIN ANALYZE -funktiolla omilla tiedoillasi.

NOT IN käsittelee NULL-arvoa tuntemattomana, joten jos lista tai alikysely sisältää NULL-arvon, koko ehto voi antaa tuntemattoman arvon ja palauttaa nolla riviä. Suodata NULL-arvot pois tai käytä sen sijaan NOT EXISTS -funktiota.

IN korvaa pitkät OR-ehtojen ketjut yhdellä luettavalla lausekkeella. WHERE id IN (1,2,3) on yhtä kuin WHERE id=1 OR id=2 OR id=3, mutta on lyhyempi, selkeämpi ja helpompi ylläpitää.

Kyllä. PostgreSQL käsittelee x IN(a, b, c) yhtä kuin x = ANY(ARRAY[a, b, c]). Molemmat tuottavat saman tuloksen ja yleensä saman kyselysuunnitelman.

Tekoälyavustajat luovat IN-lausekkeita selkokielestä, ehdottavat oikeaa arvoluetteloa ja merkitsevät NULL-riskit NOT IN -lausekkeessa. He myös kirjoittavat hitaat kyselyt uudelleen ja lisäävät EXPLAIN-vihjeitä hienosäätöä varten.

Kyllä. AI Copilot -työkalut havaitsevat toistuvat TAI-ehdot yhdessä sarakkeessa ja muokkaavat ne yhdeksi IN-luetteloksi, mikä parantaa luettavuutta ja vähentää logiikkavirheiden mahdollisuutta.

Kyllä. Lisää SELECT sulkeiden sisään: WHERE id IN (SELECT id FROM tilaukset). Sisäinen kysely, jota kutsutaan alikyselyksi, tarjoaa IN-kyselyn tarkistamien arvojen luettelon.

Suurissa taulukoissa NOT EXISTS tai LEFT JOIN ja IS NULL toimivat yleensä paremmin kuin NOT IN, koska PostgreSQL rakentaa tehokkaan anti-join-ominaisuuden. Varmista myös, että vertaillut sarakkeet on indeksoitu.

Tiivistä tämä viesti seuraavasti: