Heim >Datenbank >MySQL-Tutorial >Wie kann ich in MySQL übereinstimmende Datensätze über mehrere Tabellen hinweg finden, ohne INTERSECT zu verwenden?
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.
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.
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!