您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

MySQL查询以查找已订购两种特定产品的客户

MySQL查询以查找已订购两种特定产品的客户

我通过以下方式进行这种类型的查询

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

@najmeddine显示GROUPBY解决方案还会产生您想要的答案,但在MysqL上的效果不佳。MysqL很难优化查询GROUP BY

SELECT userid
  FROM TRANSACTIONS
 WHERE product_id in ('prod1', 'prod2')
GROUP BY userid
HAVING COUNT(DISTINCT product_id) = 2

您应该尝试两个查询,使用来分析优化EXPLAIN,还应该运行一些测试并根据数据库中的数据量对结果进行计时。

MySQL 2022/1/1 18:50:02 有294人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶