Jag gör den här typen av fråga på följande sätt:
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';
GROUP BY
lösning visas
av @najmeddine producerar också svaret du vill ha, men det fungerar inte lika bra på MySQL. MySQL har svårt att optimera GROUP BY
frågor.
Du bör prova båda frågorna och analysera optimeringen med EXPLAIN
, och kör även några tester och tidsbestämda resultaten med tanke på mängden data i din databas.