And that’s how we can delete duplicate records in SQL Server with tables without primary key, containing primary key and by keeping one original row. 原文链接:http://www.codesec.net/view/449563.html
Microsoft SQL Server 2005 中引入的ROW_NUMBER 函数使此操作变得更加简单: SQL DELETETFROM(SELECT* , DupRank = ROW_NUMBER()OVER(PARTITIONBYkey_valueORDERBY(SELECTNULL) )FROMoriginal_table )ASTWHEREDupRank >1 此脚本按给定顺序执行以下操作:
它使用像row_number()这样的排名函数为每行分配一个行号。 partition by子句,您可以重置特定列上的行号。 在这种方法中,所有唯一行的行号均为1,重复行的行号> 1,这使您可以轻松地删除这些重复行。 您可以通过使用公用表表达式(请参阅T-SQL基础知识)或在Microsoft SQL Server上不使用它来实现。 毫无疑问,SQL查询...
BEGINTRY-- 尝试删除重复记录DELETEFROMUsersWHEREUserIDIN(SELECTUserIDFROM(SELECTUserID,ROW_NUMBER()OVER(PARTITIONBYUserName,EmailORDERBYUserID)ASRowNumberFROMUsers)asTempWHERERowNumber>1);ENDTRYBEGINCATCH-- 错误处理SELECTERROR_MESSAGE()ASErrorMessage;ENDCATCH; 1. 2. 3. 4. 5. 6. 7. 8. 9. ...
TUser表中有3条重复的数据,我们现在希望删掉前2条,保留第3条 WITH [CTE DUPLICATE] as (SELECT RN=ROW_NUMBER() OVER (ORDER BY name) FROM TUser where Name='Tom' ) delete from [CTE DUPLICATE] where RN<3 执行该sql语句后,数据库中记录有5条变为3条,分别是...
-- Syntax for SQL Server and Azure SQL Database[WITH<common_table_expression>[ ,...n ] ]DELETE[TOP( expression ) [PERCENT] ] [FROM] { {table_alias||rowset_function_limited[WITH(table_hint_limited[ ...n ] ) ] } | @table_variable} [<OUTPUT Clause>] [FROMtable_source[ ,...n ...
-- Syntax for SQL Server and Azure SQL Database[WITH<common_table_expression>[ ,...n ] ]DELETE[TOP( expression ) [PERCENT] ] [FROM] { {table_alias||rowset_function_limited[WITH(table_hint_limited[ ...n ] ) ] } | @table_variable} [<OUTPUT Clause>] [FROMtable_source[ ,...n ...
在SQL Server 2005 上,我们也可以用 TOP 命令。像下面这样: SELECT * FROM dbo.duplicateTest DELETE TOP(1) FROM dbo.duplicateTest WHERE ID = 1 SELECT * FROM dbo.duplicateTest 删除前与删除后的对比如下: 总结 1、这个方法可以在表中没有明显标志字段来区分每一行的情况,但也有局限,如果一个表中...
... Isolation level repeatable read (14 row(s) affected) DBCC execution completed. If DBCC printed error messages, contact your system administrator. 锁提示 可以在 SELECT、INSERT、UPDATE、DELETE 和MERGE 语句中为单个表引用指定锁提示。 提示指定数据库引擎实例用于表数据的锁类型或行版本控制。 当需要...
An easy way to remove duplicate rows from a table in SQL Server 2008 is to use undocumented feature called%%physloc%%. This pseudo column shows the physical location of a row. 注意这个功能没有在文档中记录,所以你使用的时候要自己承担风险 ...