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

Mysql join-forespørgsel for flere tags (mange-til-mange forhold), der matcher ALLE tags?

Brug:

  SELECT * 
    FROM OBJECTS o
    JOIN OBJECTSTAGS ot ON ot.object_id = o.id
    JOIN TAGS t ON t.id = ot.tag_id
   WHERE t.name IN ('tag1','tag2')
GROUP BY o.id
  HAVING COUNT(DISTINCT t.name) = 2

Du manglede HAVING-sætningen.

Der er ingen grund til at LEFT JOIN, hvis du kun vil have rækker, hvor begge tags findes.




  1. Hvordan fremtvinger man store og små bogstaver i tabelnavne?

  2. Er det muligt at bruge SqlGeography med Linq til Sql?

  3. Oracle:hvordan får man procent af totalen ved en forespørgsel?

  4. Hvordan eksporterer man en MySQL-database til JSON?