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

MySQL按parent_sku分组时为指定域名赋予优先级的实现方法

实现域名优先级的分组排序方案

要让特定域名(比如themusthaves)的分组结果优先展示,你只需要在ORDER BY子句中添加一个条件排序字段,给目标域名赋予更高的优先级权重,再保留原有的sales降序逻辑即可。

基础解决方案:排序时优先展示目标域名分组

直接修改你的查询语句,在ORDER BY开头加入一个CASE判断,让目标域名的分组排在最前面:

SELECT 
    domain, 
    parent, 
    parent_name, 
    parent_sku, 
    SUM(qty) AS sales, 
    SUM(gross) AS revenue, 
    SUM(net) AS net_revenue, 
    SUM(refund_qty) AS returns, 
    created_at 
FROM report_byproducts_name 
GROUP BY parent_sku 
ORDER BY 
    -- 给目标域名设置最高优先级(0比1小,升序排序时会排在前面)
    CASE WHEN domain = 'themusthaves' THEN 0 ELSE 1 END,
    sales DESC 
LIMIT 50;

逻辑说明

  • CASE WHEN domain = 'themusthaves' THEN 0 ELSE 1 END会为themusthaves域名的分组标记为0,其他分组标记为1。在升序排序下,标记0的分组会全部排在标记1的分组之前。
  • 同一优先级内的分组,依然按照sales从高到低排序,保留你原本的业务逻辑。

扩展:多域名优先级排序

如果需要给多个域名设置不同的优先级(比如先themusthaves,再example.com),可以扩展CASE语句:

ORDER BY 
    CASE domain 
        WHEN 'themusthaves' THEN 0 
        WHEN 'example.com' THEN 1 
        ELSE 2 END,
    sales DESC

数字越小优先级越高,这样就能实现多域名的层级排序。

进阶:确保同一parent_sku优先显示目标域名的字段

如果你的场景是同一个parent_sku对应多个domain的记录,希望分组后不仅排序优先,连domain、parent、parent_name这些非聚合字段也优先取themusthaves域名的值(避免数据库随机取值),可以用窗口函数先预处理数据:

WITH ranked_products AS (
    SELECT 
        *,
        -- 给每个parent_sku下的记录排名,目标域名排第一
        ROW_NUMBER() OVER (
            PARTITION BY parent_sku 
            ORDER BY CASE WHEN domain = 'themusthaves' THEN 0 ELSE 1 END
        ) AS rn
    FROM report_byproducts_name
)
SELECT 
    domain, 
    parent, 
    parent_name, 
    parent_sku, 
    SUM(qty) AS sales, 
    SUM(gross) AS revenue, 
    SUM(net) AS net_revenue, 
    SUM(refund_qty) AS returns, 
    created_at 
FROM ranked_products
WHERE rn = 1 -- 只保留每个parent_sku的优先记录
GROUP BY parent_sku, domain, parent, parent_name, created_at
ORDER BY 
    CASE WHEN domain = 'themusthaves' THEN 0 ELSE 1 END,
    sales DESC 
LIMIT 50;

逻辑说明

  • 先通过ROW_NUMBER()窗口函数,给每个parent_sku下的记录按域名优先级排名,目标域名的记录排第一。
  • 过滤掉排名大于1的记录,确保每个parent_sku只保留目标域名的记录(如果存在),再进行聚合分组,这样展示的非聚合字段就会是你想要的域名对应的值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 08:36:06