Sammanfattning :i denna handledning kommer du att lära dig hur du använder SQLite IN
operatorn för att avgöra om ett värde matchar något värde i en värdelista eller ett resultat av en underfråga.
Introduktion till SQLite IN
operatör
SQLite IN
operatorn bestämmer om ett värde matchar något värde i en lista eller en underfråga. Syntaxen för IN
operatören är följande:
expression [NOT] IN (value_list|subquery);
Code language: SQL (Structured Query Language) (sql)
expression
kan vara vilket giltigt uttryck eller en kolumn i en tabell.
En värdelista är en lista med fasta värden eller en resultatuppsättning av en enda kolumn som returneras av en underfråga. Den returnerade typen av uttryck och värden i listan måste vara samma.
IN
operatorn returnerar true eller false beroende på om uttrycket matchar något värde i en värdelista eller inte. För att negera listan med värden använder du NOT IN
operatör.
SQLite IN
operatörsexempel
Vi kommer att använda Tracks
tabell från exempeldatabasen för demonstrationen.
Följande sats använder IN
operatör för att fråga spåren vars mediatyp-id är 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)
Prova det
Den här frågan använder OR
operator istället för IN
operatorn för att returnera samma resultatuppsättning som ovanstående fråga:
SELECT
TrackId,
Name,
MediaTypeId
FROM
Tracks
WHERE
MediaTypeId = 1 OR MediaTypeId = 2
ORDER BY
Name ASC;
Code language: SQL (Structured Query Language) (sql)
Prova det
Som du kan se av frågorna använder du IN
operatören är mycket kortare.
Om du har en fråga som använder många OR
operatörer kan du överväga att använda IN
operatorn istället för att göra frågan mer läsbar.
SQLite IN
operator med ett exempel på underfråga
Följande fråga returnerar en lista med album-id för artist-id 12:
SELECT albumid
FROM albums
WHERE artistid = 12;
Code language: SQL (Structured Query Language) (sql)
Prova det
För att få spåren som tillhör artist-id 12 kan du kombinera IN
operator med en underfråga enligt följande:
SELECT
TrackId,
Name,
AlbumId
FROM
Tracks
WHERE
AlbumId IN (
SELECT
AlbumId
FROM
Albums
WHERE
ArtistId = 12
);
Code language: SQL (Structured Query Language) (sql)
Prova det
I det här exemplet:
- Först returnerar underfrågan en lista över album-id som tillhör artist-id 12.
- Då returnerar den yttre frågan alla spår vars album-id matchar album-id-listan som returneras av underfrågan.
SQLite INTE I exempel
Följande sats returnerar en lista över spår vars genre-id inte finns i en lista med (1,2,3).
SELECT
trackid,
name,
genreid
FROM
tracks
WHERE
genreid NOT IN (1, 2,3);
Code language: SQL (Structured Query Language) (sql)
Prova det
I den här handledningen har du lärt dig hur du använder SQLite IN
operator för att matcha ett värde med en lista med värden eller en underfråga.