Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MySQL-Abfrage, um Kunden zu finden, die zwei bestimmte Produkte bestellt haben

Ich mache diese Art von Abfrage auf folgende Weise:

SELECT COUNT(DISTINCT t1.userid) AS user_count
  FROM TRANSACTIONS t1
  JOIN TRANSACTIONS t2 USING (userid)
 WHERE t1.product_id = 'prod1' 
   AND t2.product_id = 'prod2';

Die GROUP BY Lösung angezeigt von @najmeddine erzeugt ebenfalls die gewünschte Antwort, funktioniert aber unter MySQL nicht so gut. MySQL tut sich schwer damit, GROUP BY zu optimieren Abfragen.

Sie sollten beide Abfragen ausprobieren und die Optimierung mit EXPLAIN , und führen Sie außerdem einige Tests durch und messen Sie die Ergebnisse angesichts des Datenvolumens in Ihrer Datenbank.