MySQL查询求助:查找总数量大于50的产品
解决MySQL查询总数量大于50的产品问题
针对你的需求,这里提供两种可行的MySQL查询语句,均能正确筛选出总订单数量大于50的产品,并关联获取产品的详细信息:
方法一:子查询先统计再关联
SELECT p.product_id, p.product_name, p.price, o.total_quantity FROM products p INNER JOIN ( SELECT product_id, SUM(quantity) AS total_quantity FROM orders GROUP BY product_id HAVING SUM(quantity) > 50 ) o ON p.product_id = o.product_id;
逻辑说明:
- 子查询先对
orders表按product_id分组,计算每个产品的总订单数量total_quantity - 通过
HAVING子句筛选出总数量大于50的产品ID - 将筛选结果与
products表关联,获取对应的产品名称、价格等信息
方法二:关联后聚合筛选
SELECT p.product_id, p.product_name, p.price, SUM(o.quantity) AS total_quantity FROM products p INNER JOIN orders o ON p.product_id = o.product_id GROUP BY p.product_id, p.product_name, p.price HAVING SUM(o.quantity) > 50;
逻辑说明:
- 先通过
product_id将products表与orders表做内连接 - 按产品的唯一标识(
product_id、product_name、price)分组,计算每个产品的总订单数量 - 用
HAVING子句过滤出总数量大于50的结果集
注意事项:
- 两种写法均使用内连接(
INNER JOIN),只会返回有订单记录且总数量达标产品;若需包含无订单的产品(此类产品总数量为0,不会满足筛选条件,实际无影响),可替换为LEFT JOIN - 若你的MySQL启用了
ONLY_FULL_GROUP_BY模式,GROUP BY子句需包含所有非聚合字段(即示例中的product_id、product_name、price),避免语法错误
内容的提问来源于stack exchange,提问作者geroge
相关产品推荐
相关产品推荐

