sql >> Base de Datos >  >> RDS >> Mysql

Seleccione filas de una tabla donde la fila en otra tabla con la misma identificación tiene un valor particular en otra columna

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.)