Maison >base de données >tutoriel mysql >Comment identifier les appelants non enregistrés à l'aide de requêtes SQL ?
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!