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

MySQL zmaga się z zapytaniami w relacji jeden do wielu spełniających wiele warunków

To jest podział relacyjny problem.

Sposób, w jaki sugerujesz, za pomocą COUNT jest prawdopodobnie najłatwiejszy w MySQL

SELECT product_id
FROM product_attributes pa
WHERE (attribute='size' and value='medium')
OR (attribute='colour' and value='blue')
GROUP BY product_id
HAVING COUNT(DISTINCT CONCAT(attribute,value) ) = 2

Istnieje inne podejście z podwójnym NOT EXISTS w linkowanym artykule, ale ponieważ MySQL nie obsługuje CTE, co byłoby dość kłopotliwe.



  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 przechowywać sekwencyjne dane w mysql

  2. MySQL ERROR 1045 (28000):Odmowa dostępu dla użytkownika 'bill'@'localhost' (przy użyciu hasła:TAK)

  3. MySQL łączy tylko wybrane wiersze

  4. Przygotowane zestawienia MySQL PHP PDO - problemy z wydajnością a bezpieczeństwo

  5. Jak powinienem zmienić znaczenie znaków w tym zapytaniu LIKE?