sql >> Database teknologi >  >> RDS >> SQLite

SQLite IN

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.


  1. Brug af String[] selectionArgs i SQLiteDatabase.query()

  2. Få øverste 1 række af hver gruppe

  3. Ret Msg 8114 "Fejl ved konvertering af datatype varchar til numerisk" i SQL Server

  4. Match en sætning, der ender på et præfiks, med fuldtekstsøgning