Ik zou hier eigenlijk geen JOIN voor aanraden - of liever, ik zou een "semijoin aanraden ", wat een relationeel-algebraconcept is dat niet direct in SQL wordt uitgedrukt. Een semijoin is in wezen een join waarbij u records uit slechts één tabel wilt ophalen, maar met dien verstande dat ze overeenkomstige records in een andere tabel hebben.
In SQL-notatie wordt dit concept indirect uitgedrukt door gebruik te maken van een IN
clausule
, met een subquery
:
SELECT key, value
FROM comments
WHERE key IN
( SELECT comment_key
FROM meta
WHERE value = 1
)
;
(MySQL zal dat uiteindelijk intern vertalen naar een semi-join - in wezen een soort gedegenereerde inner-join - maar de IN
clausule is de natuurlijke manier om het uit te drukken in onbewerkte SQL.)