sql >> Databasteknik >  >> RDS >> Mysql

hur man får liknande objekt baserat på taggar

Detta kommer att returnera en lista över alla filmer som delar minst 1 tagg med den givna <current_movie_id> ordnas genom att minska antalet taggar gemensamma

SELECT movie.*, count(DISTINCT similar.tag) as shared_tags FROM movie INNER JOIN 
    ( tagged AS this_movie INNER JOIN tagged AS similar USING (tag) )
    ON similar.movie = movie.id
WHERE this_movie.movie=<current_movie_id>
AND   movie.id != this_movie.movie
GROUP BY movie.id
ORDER BY shared_tags DESC

hoppas det ger dig något att jobba med




  1. Vad är skillnaden mellan LATERAL JOIN och en underfråga i PostgreSQL?

  2. Data för långa för kolumn i Django på MySQL

  3. MySQL Entity Framework 4.0 Fältmappning för lagrad procedur

  4. Intervjutips för SQL-databasadministratör