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.