Heim >Datenbank >MySQL-Tutorial >Wie wähle ich Datensätze aus Tabelle2 aus, wobei diejenigen mit übereinstimmenden Namen in Tabelle1 ausgeschlossen werden?

Wie wähle ich Datensätze aus Tabelle2 aus, wobei diejenigen mit übereinstimmenden Namen in Tabelle1 ausgeschlossen werden?

Susan Sarandon
Susan SarandonOriginal
2025-01-19 16:46:15591Durchsuche

How to Select Records from Table2 Excluding Those with Matching Names in Table1?

Aus einer Tabelle auswählen, um Datensätze aus einer anderen Tabelle auszuschließen

Frage:

Gegeben zwei Tabellen, Tabelle1 enthält die Spalten ID und Name, Tabelle2 enthält die Spalten ID und Name. Rufen Sie alle Zeilen in Tabelle2 ab, deren Namenswert nicht in Tabelle1 enthalten ist.

Vorgeschlagene Abfrage (falsch):

<code class="language-sql">SELECT name
FROM table2
-- that are not in table1 already</code>

Lösung:

Eine genauere Abfrage, um die gewünschten Ergebnisse zu erhalten, ist:

<code class="language-sql">SELECT t2.name
FROM table2 t2
LEFT JOIN table1 t1 ON t1.name = t2.name
WHERE t1.name IS NULL;</code>

Erklärung:

Diese Abfrage verwendet einen linken Join, um jede Zeile in Tabelle2 basierend auf der Namensspalte mit der entsprechenden Zeile in Tabelle1 abzugleichen. Wenn in Tabelle 1 keine passende Zeile gefunden wird, ist der t1.name-Wert für diese Zeile in den Ergebnissen NULL. Indem wir nur die Zeilen auswählen, in denen t1.name NULL ist, schließen wir effektiv Datensätze in Tabelle2 aus, die übereinstimmende Namenswerte in Tabelle1 haben. Alternativ kann die NOT EXISTS-Klausel verwendet werden, um das gleiche Ergebnis zu erzielen:

<code class="language-sql">SELECT name
FROM table2 t2
WHERE NOT EXISTS (
    SELECT 1
    FROM table1 t1
    WHERE t1.name = t2.name
);</code>

Die NOT EXISTS-Version ist im Allgemeinen effizienter als die LEFT JOIN-Version, insbesondere bei großen Datensätzen.

Das obige ist der detaillierte Inhalt vonWie wähle ich Datensätze aus Tabelle2 aus, wobei diejenigen mit übereinstimmenden Namen in Tabelle1 ausgeschlossen werden?. 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