Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 删除表中的重复记录_Sql Server - Fatal编程技术网

Sql server 删除表中的重复记录

Sql server 删除表中的重复记录,sql-server,Sql Server,假设我有一个名为a的表,其中只有一列名为marks。 它有一些重复的值。如何在没有临时表的情况下删除重复的值。 表中应该包含一个重复的值。如果表中的两条记录相等,我不确定您如何唯一地识别一条来删除该项。 你能做的是: 删除两者,然后使用游标或循环结构重新添加一个。 选择到另一个表中并按分组,以避免重复,然后从原始表中删除所有行并跨行复制这些行。 将id列添加到此表中,填充它,然后调用: 删除 哪里 我不在 选择MAXid 从 按名称分组 如果表中的两条记录相等,您可以在之后删除此列。我不确定您

假设我有一个名为a的表,其中只有一列名为marks。 它有一些重复的值。如何在没有临时表的情况下删除重复的值。
表中应该包含一个重复的值。

如果表中的两条记录相等,我不确定您如何唯一地识别一条来删除该项。 你能做的是:

删除两者,然后使用游标或循环结构重新添加一个。 选择到另一个表中并按分组,以避免重复,然后从原始表中删除所有行并跨行复制这些行。 将id列添加到此表中,填充它,然后调用:

删除 哪里 我不在 选择MAXid 从 按名称分组


如果表中的两条记录相等,您可以在之后删除此列。我不确定您如何唯一地识别一条记录来删除该项。 你能做的是:

删除两者,然后使用游标或循环结构重新添加一个。 选择到另一个表中并按分组,以避免重复,然后从原始表中删除所有行并跨行复制这些行。 将id列添加到此表中,填充它,然后调用:

删除 哪里 我不在 选择MAXid 从 按名称分组

然后您可以删除此列

选择* 从内部连接A作为B 其中A.标记=B.标记

如果我没有犯错误,这会显示重复的值,所以你可以为删除做一个连接

编辑:我只是尝试一下,它不起作用,你的表中没有ID列吗? 比如:

挑选* 从内部连接A作为B 其中A.标记=B.标记

如果我没有犯错误,这会显示重复的值,所以你可以为删除做一个连接

编辑:我只是尝试一下,它不起作用,你的表中没有ID列吗? 比如:


susantosh之所以很难删除重复项,是因为您没有在表中定义任何键,那么是什么使您的任何行都是唯一的呢? 你需要拿起一本关于桌子设计的基本书籍,并意识到如果没有某种独特性,你会让自己疯狂地试图找出任何东西

您可以做以下几件事:

选择从TableName到NewTableName的不同标记 按特定标记分组将它们移动到另一个表,然后删除上一个表 添加一个唯一的标识列(可能是int类型),然后编写代码以消除重复项
这些只是您的一些选择,但如果不了解表设计的基本知识,您将反复遇到这个问题。

删除重复项如此困难的原因是susantosh没有在表中定义任何键,那么是什么使您的任何行都是唯一的?
WITH    q AS
        (
        SELECT  *, ROW_NUMBER() OVER (PARTITION BY marks ORDER BY marks) AS rn
        FROM    a
        )
DELETE
FROM    q
WHERE   rn > 1
你需要拿起一本关于桌子设计的基本书籍,并意识到如果没有某种独特性,你会让自己疯狂地试图找出任何东西

您可以做以下几件事:

选择从TableName到NewTableName的不同标记 按特定标记分组将它们移动到另一个表,然后删除上一个表 添加一个唯一的标识列(可能是int类型),然后编写代码以消除重复项
这些只是您的一些选择,但如果不了解表设计的基本知识,您将反复遇到此问题。

删除stackoverflow中的重复问题:Susan,如果您单击Vinko提供的链接,你也许可以从之前类似的SO问题中找到你问题的答案。@DOK:我不确定是否应该解析它Susan Thosh或S U Santhosh-两者似乎都是合理的:删除stackoverflow中的重复问题:Susan,如果您单击Vinko提供的链接,您可能会从以前类似的SO问题中找到您的问题的答案。@DOK:我不确定是否应该解析它Susan Thosh或S U Santhosh-两者似乎都是合理的:您好,请看问题,表格中只有一列,我理解。我的建议与表中的记录行相关,而不是与列相关。您好,请查看表中只有一列的问题,我理解这一点。我的建议涉及表中的记录行而不是列。主要的是我们不应该使用任何临时表。主要的是我们不应该使用任何临时表。
WITH    q AS
        (
        SELECT  *, ROW_NUMBER() OVER (PARTITION BY marks ORDER BY marks) AS rn
        FROM    a
        )
DELETE
FROM    q
WHERE   rn > 1