MySQL Query to find customers who have ordered two specific products

前端 未结 6 592
终归单人心
终归单人心 2021-01-14 07:21

I\'m having trouble coming up with a query that will find all customers who have purchased both PROD1 and PROD2.

Here\'s a pseudo-query that kind of looks like what

6条回答
  •  孤街浪徒
    2021-01-14 08:03

    I do this type of query in the following way:

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

    The GROUP BY solution shown by @najmeddine also produces the answer you want, but it doesn't perform as well on MySQL. MySQL has a hard time optimizing GROUP BY queries.

    You should try both queries, analyzing the optimization with EXPLAIN, and also run some tests and time the results given the volume of data in your database.

提交回复
热议问题