Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Lista tagów SQL i filtrowanie tagów

left join tags tabeli i uwzględnij szukany identyfikator w klauzuli join i sprawdź liczniki w having .

SELECT u.id,u.name,GROUP_CONCAT(ut.tagid) as tags
FROM users u 
LEFT JOIN usertag as ut ON u.id = ut.userid 
LEFT JOIN tags t ON t.id=ut.tagid AND t.ID IN (10,20,30) --change this as needed
GROUP BY u.id,u.name
HAVING COUNT(ut.tagid) >= COUNT(t.id) AND COUNT(t.id) = 3 --change this number to the number of tags

Jeszcze jedną opcją jest użycie FIND_IN_SET jeśli istnieją ograniczone wartości. Na przykład

SELECT * FROM (
SELECT u.*, GROUP_CONCAT(ut.tagid) as tags 
FROM users as u 
LEFT JOIN usertag as ut ON u.id = ut.userid 
GROUP BY u.id
) T
WHERE FIND_IN_SET('10',tags) > 0 AND FIND_IN_SET('20',tags) > 0



  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 WHERE problem z listą oddzieloną przecinkami

  2. Czy wyzwalacze bazy danych są bezpieczne dla ograniczeń integralności między tabelami?

  3. Importuj dane szesnastkowe/binarne do mysql

  4. Jak uzyskać listę przedmieść otaczających lokalizację, a następnie powtórzyć dla innych lokalizacji za pomocą MySql?

  5. Problemy z kodowaniem tekstu MySQL C#