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
Mary-Kate OlsenOriginal
2025-01-22 18:47:11928Durchsuche

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>

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“

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

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“

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

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

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

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!

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