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

MySQL查询:按Material与Data分组获取商品最低价格

解决方案:按Material+Data组合查询最低价格

刚好我之前也处理过类似的多列分组求最值的需求,给你两个可行的单条SQL方案,都不需要后续处理:

方法一:基础分组聚合(兼容所有MySQL版本)

这是最直接的方式,利用GROUP BY将相同material和data的商品组合分组,再用MIN()函数提取每组的最低价格:

SELECT material, data, MIN(price) AS price
FROM your_table_name
GROUP BY material, data;

这个查询会直接返回你需要的结果:每个商品组合对应最低价格的条目,完全匹配你给出的示例输出。

方法二:窗口函数(MySQL 8.0+适用)

如果你的MySQL版本是8.0及以上,推荐用窗口函数,它的优势是如果后续需要保留原表的其他字段(比如商品上架者ID、上架时间等),可以轻松获取对应最低价格的完整行数据:

SELECT material, data, price
FROM (
    SELECT 
        material, 
        data, 
        price,
        -- 按商品组合分组,按价格升序排序,给每行标序号
        ROW_NUMBER() OVER (PARTITION BY material, data ORDER BY price ASC) AS rn
    FROM your_table_name
) AS subquery
-- 筛选每个组合中序号为1的行(即价格最低的行)
WHERE rn = 1;
  • 如果同一个商品组合有多个相同的最低价格,ROW_NUMBER()只会返回其中一行;如果想保留所有最低价的行,可以把ROW_NUMBER()换成RANK()或者DENSE_RANK()。

关于LEAST关键字的说明

你提到的LEAST并不适合这个场景,它的作用是取单个行内多个字段或多个值中的最小值(比如LEAST(price, discount_price)),而无法对分组后的数据集进行聚合计算,所以不满足你按商品组合求最低价格的需求。

内容的提问来源于stack exchange,提问作者Luiz Rodrigo

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:35:14