Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Selecione linhas de uma tabela em que a linha de outra tabela com o mesmo id tenha um valor específico em outra coluna


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