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

如何将SubCategory表去重后的CategoryName按orderby顺序插入Category主表

解决方案

你需要先为每个去重后的CategoryName匹配其在SubCategory表中对应的排序优先级,再按优先级排序后插入即可,修正后的SQL语句如下:

INSERT INTO Category (CategoryName)
SELECT CategoryName
FROM (
    SELECT CategoryName, MIN(orderby) AS sort_priority
    FROM SubCategory fr
    WHERE NOT EXISTS (
        SELECT 1 FROM Category fr1 
        WHERE fr1.CategoryName = fr.CategoryName
    )
    GROUP BY CategoryName
) AS unique_categories
ORDER BY sort_priority ASC

逻辑说明

  • 内层查询先用NOT EXISTS过滤掉已经存在于Category表的分类名称
  • 通过GROUP BY CategoryName拿到唯一的分类名,同时用MIN(orderby)取每个分类在SubCategory中最早出现的排序值作为插入排序依据,如果你需要按分类最后一次出现的顺序插入,把MIN换成MAX即可
  • 外层添加ORDER BY子句,就可以保证插入顺序完全符合你预期的orderby字段排序规则

注意:SQL 表本身是无序集合,如果后续查询Category表时也需要固定这个顺序,建议你在Category表中新增一个排序字段,把上面的sort_priority也同步插入进去,后续查询时按该字段排序即可。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 04:36:03