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