En fait, je ne recommanderais pas un JOIN pour cela - ou plutôt, je recommanderais un "semijoin ", qui est un concept d'algèbre relationnelle qui n'est pas directement exprimé en SQL. Une semi-jointure est essentiellement une jointure dans laquelle vous souhaitez récupérer des enregistrements d'une seule table, mais à condition qu'ils aient des enregistrements correspondants dans une table différente.
En notation SQL, ce concept est exprimé indirectement, en utilisant un IN
clause
, avec une sous-requête
:
SELECT key, value
FROM comments
WHERE key IN
( SELECT comment_key
FROM meta
WHERE value = 1
)
;
(MySQL finira par traduire cela en une semi-jointure en interne - essentiellement une sorte de jointure interne dégénérée - mais le IN
clause est le moyen naturel de l'exprimer en SQL brut.)