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

Comment sélectionner des enregistrements d'une table qui n'existent pas dans une autre ?

DDD
DDDoriginal
2025-01-19 16:27:09377parcourir

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

Identification des enregistrements manquants dans les tables de base de données

Les requêtes de base de données nécessitent souvent de récupérer des données d'une table sans entrée correspondante dans une autre. Illustrons cela avec un exemple :

Scénario :

Nous avons deux tables, 'table1' et 'table2', avec les structures suivantes :

<code>table1 (id, name)
table2 (id, name)</code>

Objectif :

Notre objectif est d'extraire les valeurs 'name' de 'table2' qui sont absentes dans 'table1'.

Une approche naïve pourrait être :

<code>SELECT name
FROM table2
-- where name is not in table1</code>

Malheureusement, cette requête SQL est incomplète et ne donnera pas le résultat attendu.

Solution efficace :

La bonne approche consiste à utiliser un LEFT JOIN :

<code class="language-sql">SELECT t2.name
FROM table2 t2
LEFT JOIN table1 t1 ON t1.name = t2.name
WHERE t1.name IS NULL;</code>

Explication :

  • LEFT JOIN : Cela garantit que toutes les lignes de « table2 » sont incluses dans l'ensemble de résultats, quelles que soient les lignes correspondantes dans « table1 ».
  • WHERE Clause : La condition WHERE t1.name IS NULL filtre les résultats, en conservant uniquement les lignes de 'table2' où il n'y a pas de 'nom' correspondant dans 'table1'.
  • Sélection de champ : La requête sélectionne la colonne « nom » de « table2 », car c'est le seul champ dont l'existence est garantie à partir de cette table dans le résultat final.

Cette LEFT JOIN technique est largement compatible avec divers systèmes de bases de données, offrant une méthode robuste pour identifier les enregistrements manquants entre les tables.

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!

Déclaration:
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