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

MySQL技术问询:先按Price ASC排序,再按Item name分组并字母排序

实现你的MySQL数据处理需求

嘿,针对你要的「先取每个Item name的最低价,再按Item name字母排序」的需求,我给你两种靠谱的实现方案,适配不同的MySQL版本:

方案一:用窗口函数(MySQL 8.0+ 推荐)

窗口函数是最直观的方式,能精准定位每个商品分组里的最低价记录,同时保留所有需要的列:

SELECT 
    item_name,
    price,
    model,
    color,
    -- 这里可以添加其他你需要的列
FROM (
    SELECT 
        *,
        ROW_NUMBER() OVER (PARTITION BY item_name ORDER BY price ASC) AS rn
    FROM your_table_name
) AS temp
WHERE rn = 1
ORDER BY item_name ASC;

代码解释:

  • ROW_NUMBER() OVER (PARTITION BY item_name ORDER BY price ASC):把数据按item_name分组,每个分组内按price升序排序,给每条记录打行号,最低价的那条行号就是1
  • 外层查询筛选出行号为1的记录,就是每个商品的最低价条目
  • 最后ORDER BY item_name ASC实现按商品名称字母顺序排序

方案二:子查询关联(兼容低版本MySQL)

如果你的MySQL版本低于8.0,不支持窗口函数,可以用子查询先找出每个商品的最低价,再关联原表获取完整记录:

SELECT 
    t1.item_name,
    t1.price,
    t1.model,
    t1.color,
    -- 其他需要的列
FROM your_table_name t1
JOIN (
    SELECT item_name, MIN(price) AS min_price
    FROM your_table_name
    GROUP BY item_name
) AS t2 ON t1.item_name = t2.item_name AND t1.price = t2.min_price
ORDER BY t1.item_name ASC;

代码解释:

  • 子查询t2先按item_name分组,计算每个商品的最低价min_price
  • 把原表t1和子查询t2关联,匹配商品名称和价格,得到每个商品最低价对应的完整记录
  • 最后同样用ORDER BY按商品名称排序

注意点:

  • 替换代码里的your_table_name为你实际的表名
  • 如果同一个商品有多个相同的最低价记录(比如同一款商品两个条目价格一样都是最低),方案一会只取其中一条,方案二会返回所有最低价条目,你可以根据需求调整

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:49:47