SQLite
 sql >> Base de données >  >> RDS >> SQLite

SQLite EN

Résumé :dans ce tutoriel, vous apprendrez à utiliser le SQLite IN opérateur pour déterminer si une valeur correspond à une valeur dans une liste de valeurs ou au résultat d'une sous-requête.

Introduction à SQLite IN opérateur

Le SQLite IN L'opérateur détermine si une valeur correspond à une valeur dans une liste ou une sous-requête. La syntaxe du IN l'opérateur est le suivant :

expression [NOT] IN (value_list|subquery);Code language: SQL (Structured Query Language) (sql)

L'expression peut être n'importe quelle expression valide ou une colonne d'une table.

Une liste de valeurs est une liste de valeurs fixes ou un ensemble de résultats d'une seule colonne renvoyé par une sous-requête. Le type d'expression renvoyé et les valeurs de la liste doivent être identiques.

Le IN renvoie true ou false selon que l'expression correspond ou non à une valeur d'une liste de valeurs. Pour nier la liste de valeurs, vous utilisez le NOT IN opérateur.

SQLite IN exemples d'opérateurs

Nous utiliserons les Tracks table de l'exemple de base de données pour la démonstration.

L'instruction suivante utilise le IN opérateur pour interroger les pistes dont l'identifiant de type de média est 1 ou 2.

SELECT
	TrackId,
	Name,
	Mediatypeid
FROM
	Tracks
WHERE
	MediaTypeId IN (1, 2)
ORDER BY
	Name ASC;Code language: SQL (Structured Query Language) (sql)

Essayez-le

Cette requête utilise le OR opérateur à la place du IN opérateur pour renvoyer le même ensemble de résultats que la requête ci-dessus :

SELECT
	TrackId,
	Name,
	MediaTypeId
FROM
	Tracks
WHERE
	MediaTypeId = 1 OR MediaTypeId = 2
ORDER BY
	Name ASC;Code language: SQL (Structured Query Language) (sql)

Essayez-le

Comme vous pouvez le voir dans les requêtes, en utilisant le IN l'opérateur est beaucoup plus court.

Si vous avez une requête qui utilise plusieurs OR opérateurs, vous pouvez envisager d'utiliser le IN à la place pour rendre la requête plus lisible.

SQLite IN opérateur avec un exemple de sous-requête

La requête suivante renvoie une liste d'ID d'album de l'ID d'artiste 12 :

SELECT albumid
FROM albums
WHERE artistid = 12;Code language: SQL (Structured Query Language) (sql)

Essayez-le

Pour obtenir les pistes qui appartiennent à l'identifiant d'artiste 12, vous pouvez combiner le IN opérateur avec une sous-requête comme suit :

SELECT
	TrackId, 
	Name, 
	AlbumId
FROM
	Tracks
WHERE
	AlbumId IN (
		SELECT
			AlbumId
		FROM
			Albums
		WHERE
			ArtistId = 12
	);Code language: SQL (Structured Query Language) (sql)

Essayez-le

Dans cet exemple :

  • Tout d'abord, la sous-requête renvoie une liste d'identifiants d'albums appartenant à l'identifiant d'artiste 12.
  • Ensuite, la requête externe renvoie toutes les pistes dont l'identifiant d'album correspond à la liste d'identifiants d'album renvoyée par la sous-requête.

Exemples SQLite NOT IN

L'instruction suivante renvoie une liste de pistes dont l'identifiant de genre n'est pas dans une liste de (1,2,3).

SELECT
	trackid,
	name,
	genreid
FROM
	tracks
WHERE
	genreid NOT IN (1, 2,3);Code language: SQL (Structured Query Language) (sql)

Essayez-le

Dans ce tutoriel, vous avez appris à utiliser le SQLite IN opérateur pour faire correspondre une valeur avec une liste de valeurs ou une sous-requête.