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

Zapytanie, aby znaleźć posty z dokładnym zestawem tagów (relacja wiele-do-wielu)

To jest dokładny problem z dzieleniem relacyjnym.

W SQL Server dobre wyniki metoda (przy założeniu unikalności ograniczenia post_id,tag ) to

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  

Więc nie wykluczałbym pomysłu użycia GROUP_CONCAT w HAVING zamiast tego.

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak uzyskać pierwszy dzień tygodnia na randce w mysql?

  2. Pomoc z:ERROR 1025 (HY000):Błąd przy zmianie nazwy .... (errno:150)

  3. Korzystanie z różnych silników pamięci masowej MySQL w projektowaniu baz danych

  4. Jak mogę dodać klucz obcy podczas tworzenia nowej tabeli?

  5. Programowanie klas PHP PDO:Błąd krytyczny:Wywołanie funkcji członkowskiej fetchAll() na wartości logicznej