Oversigt :i denne øvelse lærer du, hvordan du bruger SQLite IN
operator til at bestemme, om en værdi matcher en værdi i en liste over værdier eller et resultat af en underforespørgsel.
Introduktion til SQLite IN
operatør
SQLite IN
operatoren bestemmer, om en værdi matcher en værdi i en liste eller en underforespørgsel. Syntaksen for IN
operatør er som følger:
expression [NOT] IN (value_list|subquery);
Code language: SQL (Structured Query Language) (sql)
expression
kan være et hvilket som helst gyldigt udtryk eller en kolonne i en tabel.
En liste over værdier er en liste med faste værdier eller et resultatsæt af en enkelt kolonne, der returneres af en underforespørgsel. Den returnerede type udtryk og værdier i listen skal være de samme.
IN
operatoren returnerer sand eller falsk afhængigt af, om udtrykket matcher en værdi på en liste med værdier eller ej. For at afvise listen over værdier, bruger du NOT IN
operatør.
SQLite IN
operatøreksempler
Vi vil bruge Tracks
tabel fra prøvedatabasen til demonstrationen.
Følgende sætning bruger IN
operatør for at forespørge sporene, hvis medietype-id er 1 eller 2.
SELECT
TrackId,
Name,
Mediatypeid
FROM
Tracks
WHERE
MediaTypeId IN (1, 2)
ORDER BY
Name ASC;
Code language: SQL (Structured Query Language) (sql)
Prøv det
Denne forespørgsel bruger OR
operator i stedet for IN
operatør for at returnere det samme resultatsæt som ovenstående forespørgsel:
SELECT
TrackId,
Name,
MediaTypeId
FROM
Tracks
WHERE
MediaTypeId = 1 OR MediaTypeId = 2
ORDER BY
Name ASC;
Code language: SQL (Structured Query Language) (sql)
Prøv det
Som du kan se fra forespørgslerne, ved hjælp af IN
operatøren er meget kortere.
Hvis du har en forespørgsel, der bruger mange OR
operatører, kan du overveje at bruge IN
operator i stedet for at gøre forespørgslen mere læsbar.
SQLite IN
operatør med et eksempel på en underforespørgsel
Følgende forespørgsel returnerer en liste over album-id for kunstner-id 12:
SELECT albumid
FROM albums
WHERE artistid = 12;
Code language: SQL (Structured Query Language) (sql)
Prøv det
For at få de numre, der hører til kunstner-id 12, kan du kombinere IN
operator med en underforespørgsel som følger:
SELECT
TrackId,
Name,
AlbumId
FROM
Tracks
WHERE
AlbumId IN (
SELECT
AlbumId
FROM
Albums
WHERE
ArtistId = 12
);
Code language: SQL (Structured Query Language) (sql)
Prøv det
I dette eksempel:
- For det første returnerer underforespørgslen en liste over album-id'er, der tilhører kunstner-id 12.
- Derefter returnerer den ydre forespørgsel alle spor, hvis album-id matcher med album-id-listen, der returneres af underforespørgslen.
SQLite IKKE I eksempler
Følgende sætning returnerer en liste over spor, hvis genre-id ikke er på en liste med (1,2,3).
SELECT
trackid,
name,
genreid
FROM
tracks
WHERE
genreid NOT IN (1, 2,3);
Code language: SQL (Structured Query Language) (sql)
Prøv det
I denne øvelse har du lært, hvordan du bruger SQLite IN
operator for at matche en værdi med en liste over værdier eller en underforespørgsel.