sql >> Databasteknik >  >> RDS >> SQLite

SQLite IN

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.


  1. Hur man beräknar glidande medelvärde i rödförskjutning

  2. Hur man skapar en exekveringsplan i SQL Server

  3. Unik begränsning för kombination av två kolumner?

  4. SYSDATE() Exempel – MySQL