Na verdade, eu não recomendaria um JOIN para isso - ou melhor, recomendaria um "semijoin ", que é um conceito de álgebra relacional não expresso diretamente em SQL. Uma semijunção é essencialmente uma junção em que você deseja recuperar registros de apenas uma tabela, mas com a condição de que eles tenham registros correspondentes em uma tabela diferente.
Na notação SQL, esse conceito é expresso indiretamente, usando um
IN
cláusula
, com uma subconsulta
:SELECT key, value
FROM comments
WHERE key IN
( SELECT comment_key
FROM meta
WHERE value = 1
)
;
(O MySQL na verdade acabará traduzindo isso de volta em uma semijoin internamente - essencialmente uma espécie de junção interna degenerada - mas o
IN
cláusula é a maneira natural de expressá-la em SQL bruto.)