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
Libérer: 2025-01-19 16:27:09
original
376 Les gens l'ont consulté

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>
Copier après la connexion

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>
Copier après la connexion

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>
Copier après la connexion

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!

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