Heim > Datenbank > MySQL-Tutorial > Wie finde ich Datensätze in einer Tabelle, die in einer anderen nicht vorhanden sind?

Wie finde ich Datensätze in einer Tabelle, die in einer anderen nicht vorhanden sind?

Mary-Kate Olsen
Freigeben: 2025-01-22 18:47:11
Original
991 Leute haben es durchsucht

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

Wie finde ich Datensätze in einer Tabelle, die in einer anderen Tabelle nicht vorhanden sind?

In einer relationalen Datenbank müssen Sie möglicherweise Datensätze in einer Tabelle finden, die in einer anderen Tabelle nicht vorhanden sind. Ein häufiges Beispiel ist die Identifizierung von Anrufaufzeichnungen für Personen, deren Telefonnummern nicht im Telefonbuch registriert sind.

Stellen Sie sich das folgende Szenario vor:

<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>
Nach dem Login kopieren

Um Anrufaufzeichnungen für eine Person zu finden, deren Telefonnummer nicht im Telefonbuch enthalten ist, können Sie verschiedene Methoden verwenden:

Methode 1: Verwenden Sie die Unterabfrage „NOT IN“

SELECT *
FROM Call
WHERE phone_number NOT IN (SELECT phone_number FROM Phone_book)
Nach dem Login kopieren

Diese Abfrage prüft direkt, ob die Telefonnummer in der Tabelle „Anruf“ in der Tabelle „Telefonbuch“ erscheint. Wenn nicht, wählen Sie den entsprechenden Anrufdatensatz aus.

Methode 2: Verwenden Sie die Unterabfrage „NOT EXISTS“

SELECT *
FROM Call
WHERE NOT EXISTS
(SELECT *
FROM Phone_book
WHERE Phone_book.phone_number = Call.phone_number)
Nach dem Login kopieren

Ähnlich wie die Unterabfrage „NOT IN“ verwendet diese Methode die Unterabfrage „NOT EXISTS“, um zu prüfen, ob eine passende Telefonnummer in der Tabelle „Phone_book“ vorhanden ist.

Methode 3: Verwenden Sie „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
Nach dem Login kopieren

Diese Methode verwendet „LEFT OUTER JOIN“, um alle Datensätze eingehender Anrufe abzurufen, und filtert dann Datensätze mit übereinstimmenden Telefonnummern in der Tabelle „Phone_book“ heraus, indem in der Spalte „Phone_book.phone_number“ nach NULL-Werten gesucht wird.

Das obige ist der detaillierte Inhalt vonWie finde ich Datensätze in einer Tabelle, die in einer anderen nicht vorhanden sind?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage