Maison >base de données >tutoriel mysql >Comment identifier les appelants non enregistrés à l'aide de requêtes SQL ?

Comment identifier les appelants non enregistrés à l'aide de requêtes SQL ?

Patricia Arquette
Patricia Arquetteoriginal
2025-01-22 18:39:11657parcourir

How to Identify Unregistered Callers Using SQL Queries?

Identification des appelants inconnus : techniques SQL pour les numéros non enregistrés

Cet article montre comment identifier les appels téléphoniques provenant de numéros non répertoriés dans une base de données d'annuaire téléphonique à l'aide de requêtes SQL. Nous explorerons plusieurs méthodes efficaces pour y parvenir.

Scénario :

Considérez ces tableaux :

Tableau : Phone_book

id name phone_number
1 John 111111111111
2 Jane 222222222222

Tableau : Call

id date phone_number
1 0945 111111111111
2 0950 222222222222
3 1045 333333333333

L'objectif est de retrouver les appels provenant de numéros pas dans le Phone_book.

Solutions de requêtes SQL :

Trois méthodes sont présentées ci-dessous :

Méthode 1 : NOT IN Sous-requête

Cette approche utilise une sous-requête NOT IN pour filtrer efficacement les appels dont les numéros sont présents dans le Phone_book :

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

Méthode 2 : NOT EXISTS Sous-requête

Cette alternative utilise NOT EXISTS pour obtenir le même résultat. Il est souvent considéré comme plus efficace pour les grands ensembles de données :

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

Méthode 3 : LEFT OUTER JOIN avec NULL Chèque

Cette méthode utilise un LEFT OUTER JOIN et filtre les valeurs NULL dans la colonne Phone_book pour identifier les appels sans entrées correspondantes :

<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>

Résultat attendu :

Les trois requêtes produiront le même résultat :

Tableau : Call

id date phone_number
3 1045 333333333333

Cela identifie correctement l'appel provenant du numéro non enregistré. Choisissez la méthode qui convient le mieux à votre système de base de données et à la taille des données.

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