sql >> Database >  >> RDS >> Mysql

Query om berichten te vinden met een exacte set tags (veel-op-veel-relatie)

Dit is een exact relationeel delingsprobleem.

In SQL Server een goed presterende methode (uitgaande van een unieke beperking op post_id,tag ) is

SELECT post_id
FROM   post_tags
GROUP  BY post_id
HAVING MIN(CASE
             WHEN Keyword IN ( 'clever', 'interesting' ) THEN 1
             ELSE 0
           END) = 1
       AND SUM(CASE
                 WHEN Keyword IN ( 'clever', 'interesting' ) THEN 1
                 ELSE 0
               END) = 2  

Dus ik zou het idee van het gebruik van GROUP_CONCAT . niet uitsluiten in de HAVING in plaats daarvan.

HAVING GROUP_CONCAT(DISTINCT Keyword ORDER BY Keyword) = 'clever,interesting'


  1. Hoe gebruik je een dynamische parameter in een IN-clausule van een JPA-query met de naam?

  2. Oplossen:Geen geschikt stuurprogramma gevonden voor jdbc:mysql://localhost/dbname-fout bij gebruik van pools?

  3. MySQL Fout 1093 omzeilen

  4. Xampp:webbrowser geeft de localhost-pagina niet weer