Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MySQL - Finden Sie Zeilen, die mit allen Zeilen aus der verknüpften Tabelle übereinstimmen

Linke Verknüpfungen haben keinen Sinn, wenn Sie nur nach Spuren suchen, die alle Wörter enthalten. Ich gehe davon aus, dass (trackid ,wordid )-Kombination ist in trackwords eindeutig .

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

Diese Abfrage würde von Indizes auf wordlist(word), trackwords(trackid,wordid) und track(id) profitieren.