Maison > base de données > tutoriel mysql > Comment récupérer efficacement les enregistrements d'employés manquants à l'aide de SQL ?

Comment récupérer efficacement les enregistrements d'employés manquants à l'aide de SQL ?

Mary-Kate Olsen
Libérer: 2024-11-26 20:31:10
original
678 Les gens l'ont consulté

How to Efficiently Retrieve Missing Employee Records Using SQL?

Récupération des données manquantes à l'aide de "SELECT * WHERE NOT EXISTS"

L'utilisateur a l'intention d'extraire tous les enregistrements de la table "employés" lorsque cela est spécifique les cellules n'existent pas dans la table "eotm_dyn". Pour y parvenir, l'utilisateur utilise la requête suivante :

SELECT * from employees WHERE NOT EXISTS (SELECT name FROM eotm_dyn)
Copier après la connexion

Cependant, cette requête ne donne systématiquement aucun résultat, même s'il sait qu'il manque environ 20 noms.

Comprendre le problème

Comprendre le problème

L'erreur réside dans l'échec de la jointure des deux tables dans la requête. En l'état, la requête évalue simplement l'existence de noms dans la table « eotm_dyn » sans référencer la table « employés ». Cela renverra toujours false sauf si la table "eotm_dyn" est vide.

Solution : joindre les tables

SELECT  *
FROM    employees e
WHERE   NOT EXISTS
        (
        SELECT  null 
        FROM    eotm_dyn d
        WHERE   d.employeeID = e.id
        )
Copier après la connexion

Pour joindre les tables et filtrer les noms manquants, modifiez le requête comme suit :

Dans cette requête modifiée, un LEFT JOIN est implicitement effectué entre les "employés" et Tables "eotm_dyn" basées sur le champ commun "employeeID". La clause WHERE utilise ensuite NOT EXISTS pour filtrer tous les enregistrements d'employés dont les noms (ou EmployeeID) n'existent pas dans la table "eotm_dyn".

Approche alternative : LEFT JOIN et filtrage des valeurs NULL

SELECT  *
FROM    employees e
LEFT JOIN
        eotm_dyn d ON e.employeeID = d.employeeID
WHERE   d.name IS NULL
Copier après la connexion

Alternativement, on pourrait utiliser un LEFT JOIN et filtrer les valeurs NULL comme suit :

Cette approche est peut-être moins efficace que l'utilisation de NOT EXISTS, mais elle offre une méthode simple pour récupérer les données manquantes.

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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal