首页 / 知识
关于sql:如何删除表中的重复行
2023-04-17 02:28:00

How can I delete duplicate rows in a table我有一张桌子,上面说三列。 没有主键,因此可以有重复的行。 我只需要保留一个,然后删除其他。 任何想法如何做到这一点是Sql Server?
我将选择DISTINCT这些行,并将其放入临时表中,然后删除源表并从临时表中复制回数据。
当您的PK只是所有表列的一个子集时,以下示例同样适用。 (注意:我更喜欢插入另一个代理id列的方法。但是也许此解决方案也很方便。) 首先找到重复的行:
如果只有几个,则可以手动删除它们:
" rowcount"的值应为重复次数的n-1倍。在此示例中,有2个dulpics,因此rowcount为1。如果获得多个重复的行,则必须为每个唯一的主键执行此操作。 如果重复很多,则将每个密钥复制一次到另一个表:
然后复制密钥,但消除重复项。
现在,您的键中具有唯一键。检查是否没有任何结果:
从原始表中删除重复项:
插入原始行:
顺便说一句,为了完整性:在Oracle中,您可以使用一个隐藏字段(行):
请参阅:Microsoft知识站点 添加一个标识列作为代理主键,并使用它标识要删除的三行中的两行。 我会考虑在之后保留标识列,或者如果这是某种链接表,请在其他列上创建复合主键。 这是使用通用表表达式CTE的一种方法。它没有循环,没有新列或任何东西,并且不会引起任何不需要的触发器(由于deletes + inserts)的触发。 受本文启发。
这是我问这个问题时使用的方法-
这是一个艰难的情况。在不知道您的特定情况(表大小等)的情况下,我认为您最好的选择是添加一个Identity列,填充它,然后根据它删除。您可以稍后删除该列,但我建议您保留该列,因为它确实存在于表中 那这个解决方案呢: 首先,您执行以下查询:
然后,您只需要执行返回的结果集
当您只有一列时,我已经处理了这种情况,但是很容易将相同的方法应用于一列以上。如果您要我发布代码,请告诉我。 怎么样:
这是测试数据的另一种方法
Manrico Corazzi-我专门研究Oracle,而不是MS SQL,因此,您必须告诉我是否有可能提高性能:- 您可以在表中添加主键标识字段吗?
清理完当前混乱之后,您可以添加一个主键,其中包含表中的所有字段。这样可以避免您再次陷入困境。 我不确定这是否适用于DELETE语句,但这是查找重复行的一种方式:
我不确定是否可以将" SELECT"更改为" DELETE"(有人想让我知道吗?),但是即使不能,也可以将其转换为子查询。 |
最新内容
相关内容
linux命令删除用户组?
linux命令删除用户组?,管理,密码,系统,用户组,用户,概念,命令,文件,管理员,工作组,Linux命令之用户组管理1、查看/etc/group文件,只存在名称为mlinux删除重复项命令?
linux删除重复项命令?,数据,系统,工具,电脑,项目,公式,百度,代码,名字,基础,您好,我需要删除重复内容,两份以上的重复全部删除,不留一组数据?_linux硬链接删除命令?
linux硬链接删除命令?,数据,系统,不了,时间,名称,链接,文件,档案,地方,设备,linux怎么备份删除bin下的.sh命令1、dump命令 Linux dump命令用于linux交互删除命令?
linux交互删除命令?,名称,不了,系统,文件夹,命令,通用,文件,目录,指令,方法,linux删除文件夹命令1、linux删除命令rm-rf命令。具体详情:rm命令linux删除无用的命令?
linux删除无用的命令?,系统,软件,数据,员工,命令,信息,宽松,对比,状态,公司,Linux系统怎样清理垃圾文件1、clean 命令删除所有的软件安装包。删除文件linux命令行?
删除文件linux命令行?,命令,文件,不了,档案,名称,系统,数据,目录,文件夹,终端,linux的文件和目录的删除命令有哪些?1、Linux删除文件的命令是rlinux命令行删除网卡?
linux命令行删除网卡?,地址,网络,系统,工具,信息,设备,名字,管理,服务,网卡,linux中怎么把第一块网卡上的ip给删除掉1、你好,你说的删除IP是指linux命令删除字符串?
linux命令删除字符串?,软件,系统,代码,名称,通用,连续,字符,字符串,命令,空格,类似trim命令,去除字符串中的冒号,有这个简单的命令吗?1、=trimlinux删除整个命令?
linux删除整个命令?,命令,文件夹,不了,名称,通用,系统,数据,文件,目录,格式,linux的文件和目录的删除命令有哪些?linux删除文件夹的方法有两种linux如何命令删除?
linux如何命令删除?,档案,系统,命令,文件,目录,通用,文件夹,终端,选项,参数,linux的文件和目录的删除命令有哪些?Linux删除文件的命令是rm命令删除路由命令linux?
删除路由命令linux?,系统,信息,网络,地址,管理,环境,路由,命令,工作,基础,WINDOWS和LINUX系统清空路由表的命令使用Ctrl+R快捷键打开运行框,输linux命令删除当前行?
linux命令删除当前行?,系统,位置,命令,文件夹,文件,标的,数据,环境,通用,不了,求一个linux命令,他能删除一个文本文件的前几行内容,不删除全部