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

如何用SQL删除同TYPE下超出数量的最小CODE数据记录

SQL实现方案

核心逻辑

  • 首先按TYPE字段分组,筛选出记录数≥4的分组
  • 再取出上述每个分组内CODE值最小的记录,执行删除操作
  • 因CODE为char(3)定长字符类型,直接按字符串排序即可匹配数值大小逻辑,若业务中存在无前置零的数字存储场景,可转为数值类型再排序

通用兼容写法(适配所有主流SQL版本)

DELETE t FROM 你的实际表名 t
INNER JOIN (
    SELECT 
        TYPE,
        MIN(CODE) AS min_code
    FROM 你的实际表名
    GROUP BY TYPE
    HAVING COUNT(*) >= 4
) del_target 
ON t.TYPE = del_target.TYPE AND t.CODE = del_target.min_code;

支持窗口函数的数据库进阶写法(MySQL8.0+/PostgreSQL/Oracle/SQL Server)

适合需要更复杂排序、重复值处理的场景:

WITH type_rank AS (
    SELECT
        表主键字段, -- 替换为实际表的唯一主键字段
        COUNT(*) OVER(PARTITION BY TYPE) AS type_record_cnt,
        ROW_NUMBER() OVER(PARTITION BY TYPE ORDER BY CODE ASC) AS code_sort_rn
    FROM 你的实际表名
)
DELETE FROM 你的实际表名
WHERE 表主键字段 IN (
    SELECT 表主键字段 
    FROM type_rank 
    WHERE type_record_cnt >= 4 AND code_sort_rn = 1
);

注意:如果同个TYPE分组下存在多条CODE完全相同的最小记录,第一种写法会删除所有符合条件的记录,若仅需删除1条,可根据业务需求加主键过滤或者LIMIT限制调整。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 18:48:02