De hecho, no recomendaría un JOIN para esto, o mejor dicho, recomendaría un "semijoin ", que es un concepto de álgebra relacional que no se expresa directamente en SQL. Una semiunión es esencialmente una unión en la que desea recuperar registros de una sola tabla, pero con la condición de que tengan registros correspondientes en una tabla diferente.
En la notación SQL, este concepto se expresa indirectamente mediante el uso de un IN
cláusula
, con una subconsulta
:
SELECT key, value
FROM comments
WHERE key IN
( SELECT comment_key
FROM meta
WHERE value = 1
)
;
(MySQL en realidad terminará traduciendo eso internamente a una semiunión, esencialmente una especie de unión interna degenerada, pero el IN
cláusula es la forma natural de expresarlo en SQL sin procesar.)