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