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
Mary-Kate Olsenoriginal
2024-11-26 20:31:10631parcourir

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)

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
        )

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

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!

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