Mysql
 sql >> база данни >  >> RDS >> Mysql

SQL SELECT с m:n връзка

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

Чрез премахване на HAVING COUNT(*) , получавате OR вместо AND (въпреки че това няма да е най-ефективният начин)

Като замените 3 с 2 , получавате потребители, които имат точно два от три дефинирани маркера.

Като замените = 3 с >= 2 , получавате потребители, които имат поне два от три дефинирани маркера.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Записване на изображение в MySQL от Java

  2. Не може да се добави поле...размер на ред...по-голям от максимално допустимия размер

  3. Как да създадете PHP таблица с две колони със стойности от базата данни?

  4. android.content.res.Resources$NotFoundException:низ на ресурс с идентификатор #0x2 база данни

  5. PHP/MySQL:Извличане на последните *пълни* записи от седмици