PostgreSQL IN, Not IN avec des exemples

⚡ Résumé intelligent

PostgreSQL L'opérateur IN vérifie si une valeur apparaît dans une liste ou une sous-requête à l'intérieur d'une clause WHERE, remplaçant plusieurs conditions OR dans les instructions SELECT, UPDATE, INSERT et DELETE pour un filtrage plus propre, plus rapide et plus lisible.

  • 📋 syntaxe: La fonction value IN (list) renvoie vrai lorsque la valeur correspond à un élément de la liste.
  • 🔤 Listes de personnages : Encadrez les valeurs textuelles de guillemets simples à l'intérieur des parenthèses.
  • (I.e. Listes numériques : Comparez directement les nombres, sans guillemets, pour obtenir des correspondances exactes.
  • 🚫 NON INCLUS : Renvoie les lignes dont la valeur est absente de la liste fournie.
  • ⚠️ Piège NULL : Une valeur NULL à l'intérieur de NOT IN peut renvoyer silencieusement zéro ligne.
  • 🤖 Requêtes IA : Les assistants intègrent des clauses IN et signalent les valeurs NULL et les risques de performance.

PostgreSQL IN, NOT IN avec des exemples

Qu'est-ce que le PostgreSQL DANS?

L'opérateur IN est utilisé dans une clause WHERE pour vérifier si une valeur est présente dans une liste d'autres valeurs. L'opération IN permet de réduire le nombre de conditions OR nécessaires dans les instructions SELECT, UPDATE, INSERT ou DELETE.

Syntaxe

L'opérateur IN prend la syntaxe suivante :

value IN (value_1, value_2, ...)

La valeur est la valeur que vous recherchez dans la liste.

Les value_1, value_2… sont les valeurs de la liste.

Si la valeur est trouvée dans la liste, l'opérateur renverra un vrai.

La liste peut être un ensemble de nombres ou de chaînes de caractères, ou même le résultat de sortie d'une opération. Instruction SELECT comme indiqué ci-dessous:

value IN (SELECT value FROM table-name);

L’instruction placée entre parenthèses est appelée sous-requête.

PostgreSQL EN AVEC LE CARACTÈRE

Laissez-nous vous montrer comment utiliser l'opérateur IN avec des valeurs de caractères.

Considérez le tableau suivant:

Employés :

PostgreSQL EN AVEC LE CARACTÈRE

Exécutons la requête suivante sur la table ci-dessus :

SELECT * FROM Employees WHERE name IN ('James John', 'Mercy Bush', 'Kate Joel');

Il renvoie le résultat suivant :

PostgreSQL Résultat avec caractère

Nous disposons d'une liste de trois noms. Nous cherchons à savoir si l'un de ces noms figure dans la colonne « Nom » de la table « Employés ». Kate Joel a été trouvée dans une entrée de la table et ses informations ont été affichées.

PostgreSQL EN Avec numérique

Voyons maintenant comment utiliser l’opérateur IN avec des valeurs numériques.

Considérez le tableau des prix ci-dessous :

Le prix :

PostgreSQL EN Avec numérique

Nous pouvons exécuter la requête suivante sur la table :

SELECT * FROM Price WHERE price IN (200, 308, 250, 550);

Cela renvoie les éléments suivants :

PostgreSQL EN Avec résultat numérique

Nous avons créé une liste avec 4 valeurs numériques. Nous vérifions si nous pouvons faire correspondre l'une de ces valeurs avec les valeurs contenues dans la colonne prix du tableau Prix. Deux valeurs ont été mises en correspondance et leurs détails ont été renvoyés.

Utiliser le NON Operator

L'opérateur IN peut être utilisé avec l'opérateur NOT. Il renvoie les valeurs introuvables dans la colonne spécifiée. Nous utiliserons le tableau des prix pour le démontrer.

SELECT * FROM Price WHERE price NOT IN (200, 400, 190, 230);

Cela renverra ce qui suit :

PostgreSQL Utilisation de l'opérateur NOT

Nous avons créé une liste avec 4 valeurs numériques. Nous vérifions la colonne prix du tableau Prix pour les valeurs qui ne font pas partie de la liste. Deux valeurs, 250 et 300, n'ont pas été trouvées. Leurs coordonnées ont donc été restituées.

Utiliser pgAdmin

En dehors de l'interpréteur de commandes SQL, les mêmes requêtes IN et NOT IN peuvent être exécutées visuellement via l'interface pgAdmin.

Avec du caractère

Pour accomplir la même chose via pgAdmin, procédez comme suit :

Étape 1) Connectez-vous à votre compte pgAdmin.

Étape 2)

  1. Dans la barre de navigation de gauche, cliquez sur Bases de données.
  2. Cliquez sur Démo.

Utiliser pgAdmin avec un personnage

Étape 3) Tapez la requête dans l'éditeur de requêtes :

SELECT * FROM Employees WHERE name IN ('James John', 'Mercy Bush', 'Kate Joel');

Étape 4) Cliquez sur le bouton Exécuter.

Utilisation de pgAdmin avec une requête de type caractère

Il devrait renvoyer ce qui suit :

Utilisation de pgAdmin avec résultat de type caractère

Avec numérique

Pour accomplir la même chose via pgAdmin, procédez comme suit :

Étape 1) Connectez-vous à votre compte pgAdmin.

Étape 2)

  1. Dans la barre de navigation de gauche, cliquez sur Bases de données.
  2. Cliquez sur Démo.

Utiliser pgAdmin avec numérique

Étape 3) Tapez la requête dans l'éditeur de requêtes :

SELECT * FROM Price WHERE price IN (200, 308, 250, 550);

Étape 4) Cliquez sur le bouton Exécuter.

Utilisation de pgAdmin avec une requête numérique

Il devrait renvoyer ce qui suit :

Utilisation de pgAdmin avec un résultat numérique

Utiliser le NON Operator

Pour accomplir la même chose via pgAdmin, procédez comme suit :

Étape 1) Connectez-vous à votre compte pgAdmin.

Étape 2)

  1. Dans la barre de navigation de gauche, cliquez sur Bases de données.
  2. Cliquez sur Démo.

Utilisation de l'opérateur NOT dans pgAdmin

Étape 3) Tapez la requête dans l'éditeur de requêtes :

SELECT * FROM Price WHERE price NOT IN (200, 400, 190, 230);

Étape 4) Cliquez sur le bouton Exécuter.

Utilisation de l'opérateur NOT dans les requêtes pgAdmin

Il devrait renvoyer ce qui suit :

L'utilisation de l'opérateur NOT donne un résultat dans pgAdmin

Téléchargez la base de données utilisée dans ce tutoriel

FAQ

In PostgreSQLLa commande EXISTS est souvent plus rapide que la commande IN sur les grandes sous-requêtes, car elle s'arrête à la première correspondance. Pour les petites listes constantes, IN est simple et efficace. Testez les deux méthodes avec EXPLAIN ANALYZE sur vos propres données.

L'instruction NOT IN considère les valeurs NULL comme inconnues. Par conséquent, si la liste ou la sous-requête contient une valeur NULL, la condition entière peut être évaluée à « inconnu » et ne renvoyer aucune ligne. Filtrez les valeurs NULL ou utilisez plutôt NOT EXISTS.

L'opérateur IN remplace les longues chaînes de conditions OR par une seule clause lisible. WHERE id IN (1,2,3) équivaut à WHERE id=1 OR id=2 OR id=3, mais est plus court, plus clair et plus facile à maintenir.

Oui. PostgreSQL L'instruction `x IN (a, b, c)` est considérée comme équivalente à `x = ANY (ARRAY[a, b, c])`. Les deux instructions produisent le même résultat et généralement le même plan d'exécution.

Les assistants IA génèrent des clauses IN à partir de langage courant, suggèrent la liste de valeurs appropriée et signalent les risques de valeurs NULL dans les clauses NOT IN. Ils réécrivent également les requêtes lentes et ajoutent des indications EXPLAIN pour optimiser leur fonctionnement.

Oui. Les outils AI Copilot détectent les conditions OU répétées sur une colonne et les restructurent en une seule liste IN, améliorant ainsi la lisibilité et réduisant le risque d'erreurs logiques.

Oui. Placez une clause SELECT entre parenthèses : WHERE id IN (SELECT id FROM orders). La sous-requête, qui contient la liste des valeurs vérifiées par IN, renvoie la liste des valeurs correspondantes.

Pour les grandes tables, NOT EXISTS ou une jointure LEFT JOIN avec IS NULL est généralement plus performant que NOT IN car PostgreSQL Il crée une anti-jointure efficace. Assurez-vous également que les colonnes comparées sont indexées.

Résumez cet article avec :