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

如何使用MySQL找出订购了所有价格>4000产品的客户?

找出订购所有价格>4000产品的客户

要实现这个需求,核心思路是对比每个客户订购的高价格产品数量,和所有价格>4000的产品总数,两者相等的客户就是目标对象。以下是对应的SQL语句:

-- 统计所有价格>4000的产品总数
WITH high_price_products AS (
    SELECT COUNT(DISTINCT product_id) AS total_high_price
    FROM products
    WHERE price > 4000
),
-- 统计每个客户订购的高价格产品数量(去重避免重复计数)
customer_high_orders AS (
    SELECT c.customer_id, c.name AS Customer_name, COUNT(DISTINCT p.product_id) AS ordered_count
    FROM customers c
    JOIN orders_0 o ON c.customer_id = o.customer_id
    JOIN order_details od ON o.order_id = od.order_id
    JOIN products p ON od.product_id = p.product_id
    WHERE p.price > 4000
    GROUP BY c.customer_id, c.name
)
-- 筛选出订购数量等于高价格产品总数的客户
SELECT ch.Customer_name
FROM customer_high_orders ch
CROSS JOIN high_price_products hp
WHERE ch.ordered_count = hp.total_high_price;

语句说明:

  • high_price_products:先算出所有价格超过4000的产品总个数,作为对比基准。
  • customer_high_orders:关联客户、订单、订单详情和产品表,统计每个客户实际订购的高价格产品数量(用DISTINCT确保同一产品多次订购只算一次)。
  • 最后通过交叉连接匹配,筛选出订购数量等于基准总数的客户。如果查询结果为空,就说明没有客户订购了所有价格>4000的产品,和你提到的情况一致。

内容的提问来源于stack exchange,提问作者Jobin Tensing T

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 03:52:04