Mysql
 sql >> Database >  >> RDS >> Mysql

Seleziona le righe da una tabella in cui la riga in un'altra tabella con lo stesso ID ha un valore particolare in un'altra colonna

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