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.