Eigentlich würde ich dafür keinen JOIN empfehlen – oder besser gesagt, ich würde einen "Semijoin empfehlen ", ein Konzept der relationalen Algebra, das nicht direkt in SQL ausgedrückt wird. Ein Semijoin ist im Wesentlichen ein Join, bei dem Sie Datensätze aus nur einer Tabelle abrufen möchten, jedoch unter der Voraussetzung, dass sie entsprechende Datensätze in einer anderen Tabelle haben.
In der SQL-Notation wird dieses Konzept indirekt ausgedrückt, indem ein IN
Klausel
, mit einer Unterabfrage
:
SELECT key, value
FROM comments
WHERE key IN
( SELECT comment_key
FROM meta
WHERE value = 1
)
;
(MySQL übersetzt das am Ende tatsächlich intern zurück in einen Semijoin – im Wesentlichen eine Art entarteter Inner-Join – aber der IN
-Klausel ist die natürliche Art, sie in rohem SQL auszudrücken.)