Maison >base de données >tutoriel mysql >Comment rechercher des appels sans entrées correspondantes dans l'annuaire téléphonique ?

Comment rechercher des appels sans entrées correspondantes dans l'annuaire téléphonique ?

Patricia Arquette
Patricia Arquetteoriginal
2025-01-22 18:40:10730parcourir

How to Find Calls Without Corresponding Phone Book Entries?

Identifier les enregistrements d'appels sans correspondance

Ce guide montre comment rechercher des enregistrements d'appels dans une table « Appel » qui ne disposent pas d'entrées correspondantes dans une table « Phone_book ». Le but est d'identifier les appels provenant de numéros non répertoriés dans l'annuaire téléphonique. Nous explorerons plusieurs approches SQL pour y parvenir.

Méthode 1 : Utilisation de NOT IN

Cette méthode utilise la clause NOT IN pour filtrer les numéros de téléphone présents dans la table "Phone_book".

<code class="language-sql">SELECT *
FROM Call
WHERE phone_number NOT IN (SELECT phone_number FROM Phone_book);</code>

Cette requête sélectionne toutes les colonnes de la table « Appel » où le phone_number n'est pas trouvé dans la liste des phone_number de la table « Phone_book ».

Méthode 2 : Employer NOT EXISTS

Cette approche utilise une sous-requête avec NOT EXISTS pour vérifier l'absence de numéros de téléphone correspondants.

<code class="language-sql">SELECT *
FROM Call
WHERE NOT EXISTS
  (SELECT 1
   FROM Phone_book
   WHERE Phone_book.phone_number = Call.phone_number);</code>

La sous-requête recherche une correspondance. Si aucune correspondance n'est trouvée (NOT EXISTS), la requête externe inclut l'enregistrement.

Méthode 3 : Tirer parti LEFT OUTER JOIN

Cette méthode utilise un LEFT OUTER JOIN pour combiner les deux tables, puis filtre les valeurs nulles dans la table "Phone_book".

<code class="language-sql">SELECT *
FROM Call
LEFT OUTER JOIN Phone_Book
  ON Call.phone_number = Phone_book.phone_number
WHERE Phone_book.phone_number IS NULL;</code>

A LEFT OUTER JOIN renvoie toutes les lignes de la table "Appel". S'il n'y a aucune correspondance dans "Phone_book", les colonnes correspondantes dans "Phone_book" seront NULL. La clause WHERE filtre pour afficher uniquement ces lignes sans correspondance. Cette approche est souvent préférée en raison de ses avantages en termes de performances, en particulier avec des ensembles de données plus volumineux.

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