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

SQL Server:删除Sales表中所有含重复Sales Portfolio值的行

删除Sales表中所有含重复Sales Portfolio值的行

嘿,这个需求很清晰——要把所有带有重复Sales Portfolio值的记录全部删除,包括重复行本身对吧?下面给你两种实用的SQL实现方案,适配不同的数据库环境:

方法一:子查询匹配重复值(通用多数数据库)

先通过子查询找出所有重复出现的Sales Portfolio值,再删除表中包含这些值的所有行:

DELETE FROM Sales
WHERE `Sales Portfolio` IN (
    SELECT `Sales Portfolio`
    FROM Sales
    GROUP BY `Sales Portfolio`
    HAVING COUNT(*) > 1
);

方法二:自连接方式(适配MySQL等不支持同表子查询删除的数据库)

有些数据库(比如MySQL)直接在DELETE里引用同表子查询会触发报错,这时候可以用自连接的方式来绕开限制:

DELETE s1
FROM Sales s1
INNER JOIN (
    SELECT `Sales Portfolio`
    FROM Sales
    GROUP BY `Sales Portfolio`
    HAVING COUNT(*) > 1
) s2 
ON s1.`Sales Portfolio` = s2.`Sales Portfolio`;

逻辑说明

  • 核心的子查询SELECT Sales Portfolio FROM Sales GROUP BY Sales Portfolio HAVING COUNT(*) > 1负责筛选出所有出现次数超过1次的Sales Portfolio值,也就是我们要清理的重复值集合。
  • 外层的DELETE操作会把表中所有Sales Portfolio值属于这个重复集合的记录全部删除,完美符合你要的“删除所有包含该值的行(包括重复行本身)”的需求。

拿你给出的示例数据来说,执行后Kavi的三条12500的记录会被全部删除,剩下的Raj的三条记录(对应21055、32015、12000,都是唯一值)会保留下来。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:49:50