sql >> Base de Datos >  >> RDS >> Mysql

MySQL Query para encontrar clientes que hayan pedido dos productos específicos

Hago este tipo de consulta de la siguiente manera:

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';

El GROUP BY solución mostrado por @najmeddine también produce la respuesta que desea, pero no funciona tan bien en MySQL. MySQL tiene dificultades para optimizar GROUP BY consultas.

Debería probar ambas consultas, analizando la optimización con EXPLAIN , y también ejecute algunas pruebas y cronometre los resultados dado el volumen de datos en su base de datos.