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

SQL SELECT med m:n relation

SELECT  u.*
FROM    (
        SELECT  user_id
        FROM    tag t
        JOIN    user_has_tag uht
        ON      uht.tag_id = t.id
        WHERE   tag_name IN ('apple', 'orange', 'banana')
        GROUP BY
                user_id
        HAVING  COUNT(*) = 3
        ) q
JOIN    user u
ON      u.id = q.user_id

Ved at fjerne HAVING COUNT(*) , får du OR i stedet for AND (selvom det ikke vil være den mest effektive måde)

Ved at erstatte 3 med 2 , får du brugere, der har præcis to af tre tags defineret.

Ved at erstatte = 3 med >= 2 , får du brugere, der har defineret mindst to af tre tags.



  1. SQL Server Database Backup Encryption

  2. PostgreSQL belastningsbalancering i skyen gjort let

  3. Byg en kontaktbog med Python, PyQt og SQLite

  4. PDO indsæt et simpelt array i MySQL-databasen