Maison > base de données > tutoriel mysql > Comment sélectionner des valeurs distinctes dans une table qui n'existent pas dans une autre ?

Comment sélectionner des valeurs distinctes dans une table qui n'existent pas dans une autre ?

DDD
Libérer: 2025-01-19 16:31:10
original
290 Les gens l'ont consulté

How to Select Distinct Values from One Table That Don't Exist in Another?

Extraire des enregistrements uniques introuvables dans une autre table : un guide détaillé

Une tâche fréquente de base de données consiste à récupérer des entrées uniques d'une table qui sont absentes dans une autre. Illustrons avec un exemple :

<code>table1 (id, name)
table2 (id, name)</code>
Copier après la connexion

Notre objectif est de sélectionner les données de table2 qui n'apparaissent pas dans table1. Une approche naïve pourrait ressembler à ceci :

<code>SELECT name
FROM table2
-- excluding those in table1</code>
Copier après la connexion

C'est insuffisant ; une méthode plus sophistiquée est nécessaire pour identifier avec précision les enregistrements distincts qui ne correspondent pas.

Solution efficace : LEFT JOIN et IS NULL

La requête suivante utilise un LEFT JOIN pour lier les lignes de table1 et table2 en fonction de la colonne name. La condition IS NULL filtre ensuite toutes les paires correspondantes :

<code>SELECT t1.name
FROM table1 t1
LEFT JOIN table2 t2 ON t2.name = t1.name
WHERE t2.name IS NULL</code>
Copier après la connexion

Répartition détaillée :

La requête fonctionne comme suit :

  1. Il sélectionne toutes les entrées de table1 et tente de les joindre aux entrées correspondantes dans table2.
  2. La clause WHERE identifie les lignes où se trouve la colonne table2.name NULL. Une valeur NULL signifie que la ligne table1 respective n'a aucune correspondance dans table2.
  3. Enfin, il renvoie uniquement la colonne name des résultats, garantie d'exister dans table1 pour toutes les lignes sélectionnées.

Remarques importantes :

Bien que généralement efficace et compatible avec de nombreux systèmes de bases de données prenant en charge ANSI 92 SQL, cette approche n'est peut-être pas toujours la plus rapide. Des alternatives, comme l'utilisation de l'opérateur NOT IN, pourraient offrir de meilleures performances dans des situations spécifiques.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal