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

MySQL:busque filas que coincidan con todas las filas de la tabla unida

No tiene sentido unir a la izquierda si solo está buscando pistas que tengan todas las palabras. Supongo que (trackid ,wordid ) la combinación es única en trackwords .

SELECT t.id
  FROM track as t,  trackwords as tw, wordlist as wl
 WHERE t.id=tw.trackid
   AND wl.id=tw.wordid
   AND wl.trackusecount>0 /* not sure what that is - you have it in your query */
   AND wl.word in ('folsom','prison','blues')
 GROUP by t.id
HAVING count(*) = 3

Esta consulta se beneficiaría de los índices de lista de palabras (palabra), palabras de seguimiento (id de pista, id de palabra) y pista (id).