复制数据库中的行

时间:2016-12-20 14:11:15

标签: sql sql-server

我们已经完成了翻译api,我们的用户可以为系统添加翻译。 api中的一个错误添加了我需要删除的重复行。

enter image description here

translationConnection_Id与TranslationCompanyKey_Id结合使用是一个密钥,因此不应该是重复的。 因为我是SQL的真正傻瓜我需要一些帮助才能创建一个脚本来删除所有重复但保存其中一行。

SELECT TOP 1000 [Id]
  ,[Value]
  ,[TranslationConnection_Id]
  ,[TranslationCompanyKey_Id]
 FROM [AAES_TRAN].[dbo].[Translations]

3 个答案:

答案 0 :(得分:5)

我认为这会奏效。首先尝试SELECT部分​​以确定。

DELETE FROM tblTranslations WHERE ID IN (
    SELECT MAX(ID) FROM tblTranslations
    GROUP BY TranslationConnection_Id, TranslationCompanyKey_Id
    HAVING COUNT(*) > 1
)

答案 1 :(得分:0)

您可以使用ROW_NUMBER()分析函数,例如

SELECT * FROM (
SELECT TOP 1000 [Id]
  ,[Value]
  ,[TranslationConnection_Id]
  ,[TranslationCompanyKey_Id]
  ,ROW_NUMBER() OVER(PARTITION BY [Value] ORDER BY [Value]) AS rn
 FROM [AAES_TRAN].[dbo].[Translations] ) xxx
WHERE rn = 1;

答案 2 :(得分:0)

我想你想保留重复记录中的一条记录。

此代码将删除重复记录,但会保留一条记录。试试这个:

Class<T>.newInstance()

参考:https://jwcooney.com/2011/11/18/sql-server-delete-duplicate-records-except-the-first-duplicate-record/