You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何查询同时订购全部指定产品(01、03、05)的用户?

筛选同时订购多款指定产品的用户解决方案

下面提供几种实用的SQL查询方法,帮你找出同时订购了01、03、05三款产品的用户:

方法一:GROUP BY + HAVING 子句(最常用)

先筛选出涉及目标产品的订单记录,再按用户分组,通过统计用户订购的不同产品数量来判断是否满足条件。

SELECT user_id
FROM sales_orders
WHERE product IN ('01', '03', '05')
GROUP BY user_id
HAVING COUNT(DISTINCT product) = 3;
  • 加DISTINCT是为了避免同一用户多次订购同一款产品时计数重复,确保统计的是不同产品的数量。如果你的表中一个用户对同一款产品只会有一条订单记录,也可以去掉DISTINCT。

方法二:多表内连接(JOIN)

通过三次连接订单表,分别匹配每个目标产品的订单,最终只保留同时存在三个匹配结果的用户。

SELECT DISTINCT s1.user_id
FROM sales_orders s1
JOIN sales_orders s2 ON s1.user_id = s2.user_id
JOIN sales_orders s3 ON s1.user_id = s3.user_id
WHERE s1.product = '01'
  AND s2.product = '03'
  AND s3.product = '05';
  • DISTINCT用于去重,避免同一个用户因为多笔订单被多次返回。

方法三:EXISTS 子查询

逐个检查用户是否存在每款目标产品的订单记录,只有三个条件都满足的用户才会被选中。

SELECT DISTINCT user_id
FROM sales_orders s
WHERE EXISTS (SELECT 1 FROM sales_orders WHERE user_id = s.user_id AND product = '01')
  AND EXISTS (SELECT 1 FROM sales_orders WHERE user_id = s.user_id AND product = '03')
  AND EXISTS (SELECT 1 FROM sales_orders WHERE user_id = s.user_id AND product = '05');
  • 这种方法逻辑直观,适合产品数量不多的场景,每增加一款产品就多一个EXISTS条件即可。

内容的提问来源于stack exchange,提问作者Lila C

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 00:05:26