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

如何用SQL按SKU和Size分组查询对应最低价格的Product_ID

找出每组Sku+Size下价格最低的Product_ID的SQL写法

针对你的需求——从包含Product_ID、Sku、Size、Price字段的产品表中,提取每个Sku+Size组合下价格最低的Product_ID,以下是几种实用的SQL写法:

方法1:窗口函数(推荐,支持多数现代数据库)

适合MySQL 8.0+、PostgreSQL、SQL Server等支持窗口函数的数据库,逻辑清晰且灵活:

SELECT Product_ID, Sku, Size, Price
FROM (
    SELECT 
        Product_ID, 
        Sku, 
        Size, 
        Price,
        -- 按Sku+Size分组,每组内按价格升序编号
        ROW_NUMBER() OVER (PARTITION BY Sku, Size ORDER BY Price ASC) AS row_rank
    FROM 你的产品表名
) AS ranked_data
WHERE row_rank = 1;
  • 说明:PARTITION BY Sku, Size将数据按指定组合分组,ORDER BY Price ASC让每组内价格最低的行排在首位,ROW_NUMBER()为每行分配组内编号,取编号为1的行就是目标结果。
  • 扩展:如果同一组合下存在多个价格相同的最低价格产品,想要返回所有符合条件的Product_ID,只需将ROW_NUMBER()替换为RANK()或DENSE_RANK()即可。

方法2:子查询关联(兼容老版本数据库)

适用于不支持窗口函数的老版本数据库(如MySQL 5.x):

SELECT p.Product_ID, p.Sku, p.Size, p.Price
FROM 你的产品表名 p
INNER JOIN (
    -- 先找出每个Sku+Size组合的最低价格
    SELECT Sku, Size, MIN(Price) AS min_price
    FROM 你的产品表名
    GROUP BY Sku, Size
) AS group_min_prices
ON p.Sku = group_min_prices.Sku 
AND p.Size = group_min_prices.Size 
AND p.Price = group_min_prices.min_price;
  • 说明:先通过GROUP BY计算每组的最低价格,再通过关联原表筛选出价格等于该最低值的行,最终得到目标数据。

注意:将上述代码中的你的产品表名替换为你实际使用的表名称即可。

内容的提问来源于stack exchange,提问作者EZ-Ryder

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 21:18:18