Maison > base de données > tutoriel mysql > Comment trouver des enregistrements dans une table qui n'existent pas dans une autre ?

Comment trouver des enregistrements dans une table qui n'existent pas dans une autre ?

Mary-Kate Olsen
Libérer: 2025-01-22 18:47:11
original
990 Les gens l'ont consulté

How to Find Records in One Table That Don't Exist in Another?

Comment retrouver des enregistrements dans une table qui n'existent pas dans une autre table ?

Dans une base de données relationnelle, vous devrez peut-être rechercher des enregistrements dans une table qui n'existent pas dans une autre table. Un exemple courant est l'identification des enregistrements d'appels pour des personnes dont les numéros de téléphone ne sont pas enregistrés dans l'annuaire téléphonique.

Considérez le scénario suivant :

<code>电话簿 (Phone_book)
+----+------+--------------+
| id | name | phone_number |
+----+------+--------------+
| 1  | John | 111111111111 |
+----+------+--------------+
| 2  | Jane | 222222222222 |
+----+------+--------------+

来电记录 (Call)
+----+------+--------------+
| id | date | phone_number |
+----+------+--------------+
| 1  | 0945 | 111111111111 |
+----+------+--------------+
| 2  | 0950 | 222222222222 |
+----+------+--------------+
| 3  | 1045 | 333333333333 |
+----+------+--------------+</code>
Copier après la connexion

Pour retrouver les enregistrements d'appels d'une personne dont le numéro de téléphone ne figure pas dans l'annuaire téléphonique, vous pouvez utiliser plusieurs méthodes :

Méthode 1 : Utiliser la sous-requête 'NOT IN'

SELECT *
FROM Call
WHERE phone_number NOT IN (SELECT phone_number FROM Phone_book)
Copier après la connexion

Cette requête vérifie directement si le numéro de téléphone de la table 'Appel' apparaît dans la table 'Phone_book'. Sinon, sélectionnez l'enregistrement d'appel correspondant.

Méthode 2 : Utiliser la sous-requête 'NOT EXISTS'

SELECT *
FROM Call
WHERE NOT EXISTS
(SELECT *
FROM Phone_book
WHERE Phone_book.phone_number = Call.phone_number)
Copier après la connexion

Semblable à la sous-requête 'NOT IN', cette méthode utilise la sous-requête 'NOT EXISTS' pour vérifier si un numéro de téléphone correspondant existe dans la table 'Phone_book'.

Méthode 3 : Utilisez 'LEFT OUTER JOIN'

SELECT * 
FROM Call
LEFT OUTER JOIN Phone_Book
ON (Call.phone_number = Phone_book.phone_number)
WHERE Phone_book.phone_number IS NULL
Copier après la connexion

Cette méthode utilise 'LEFT OUTER JOIN' pour récupérer tous les enregistrements d'appels entrants, puis filtre les enregistrements avec des numéros de téléphone correspondants dans la table 'Phone_book' en vérifiant les valeurs NULL dans la colonne 'Phone_book.phone_number'.

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