In realtà non consiglierei un JOIN per questo — o meglio, consiglierei un "semijoin ", che è un concetto di algebra relazionale non espresso direttamente in SQL. Un semijoin è essenzialmente un join in cui si desidera recuperare record da una sola tabella, ma a condizione che abbiano record corrispondenti in una tabella diversa.
Nella notazione SQL, questo concetto viene espresso indirettamente, utilizzando un IN
clausola
, con una sottoquery
:
SELECT key, value
FROM comments
WHERE key IN
( SELECT comment_key
FROM meta
WHERE value = 1
)
;
(MySQL finirà per tradurlo internamente in un semijoin — essenzialmente una sorta di inner-join degenerato — ma il IN
La clausola è il modo naturale per esprimerla in SQL grezzo.)