Heim >Datenbank >MySQL-Tutorial >Wie kann ich in MySQL übereinstimmende Datensätze über mehrere Tabellen hinweg finden, ohne INTERSECT zu verwenden?

Wie kann ich in MySQL übereinstimmende Datensätze über mehrere Tabellen hinweg finden, ohne INTERSECT zu verwenden?

Susan Sarandon
Susan SarandonOriginal
2024-12-27 09:32:13282Durchsuche

How Can I Find Matching Records Across Multiple Tables in MySQL Without Using INTERSECT?

Datensatzüberschneidungen in MySQL mithilfe der INNER JOIN- und IN-Klausel finden

Bei der Arbeit mit mehreren Tabellen ist es häufig erforderlich, nach Datensätzen zu suchen, die bestimmten Kriterien in mehreren Feldern entsprechen . In diesem Szenario möchten Sie Datensätze finden, bei denen die Felder „Vorname“ und „Nachname“ mit bestimmten Werten in einer anderen Tabelle übereinstimmen.

Ein Ansatz besteht darin, den Befehl INTERSECT zu verwenden, wie in Ihrem SQL-Abfragebeispiel zu sehen. Allerdings unterstützt MySQL INTERSECT nicht. Stattdessen gibt es alternative Methoden, um das gewünschte Ergebnis zu erzielen.

Verwendung von INNER JOIN

Ein INNER JOIN kann verwendet werden, um Datensätze zu filtern, die übereinstimmende Zeilen in einer anderen Tabelle haben. In Ihrem Fall können Sie die folgende Abfrage verwenden:

SELECT DISTINCT records.id
FROM records
INNER JOIN data d1 ON d1.id = records.firstname AND d1.value = "john"
INNER JOIN data d2 ON d2.id = records.lastname AND d2.value = "smith"

Diese Abfrage gibt die eindeutigen IDs von Datensätzen zurück, die beide Bedingungen erfüllen.

Verwendung der IN-Klausel

Andere Alternativ können Sie die IN-Klausel verwenden, um nach Werten zu filtern, die in einer Unterabfrage vorhanden sind:

SELECT DISTINCT records.id
FROM records
WHERE records.firstname IN (
    SELECT id FROM data WHERE value = 'john'
)
AND records.lastname IN (
    SELECT id FROM data WHERE value = 'smith'
)

Diese Abfrage gibt das gleiche Ergebnis zurück wie die INNER JOIN-Abfrage durch Auswahl von Datensätzen, bei denen die Werte für Vorname und Nachname mit den angegebenen Werten in den Unterabfragen übereinstimmen.

Das obige ist der detaillierte Inhalt vonWie kann ich in MySQL übereinstimmende Datensätze über mehrere Tabellen hinweg finden, ohne INTERSECT zu verwenden?. 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