SQL在SQL Server上删除没有主键的表中的重复行

时间:2018-07-25 21:11:35

标签: sql tsql

This is the table I want to delete duplicate

所以我想删除重复的行而不只是查找它 我当前的代码只能让我知道必须删除哪些ROWS。 但是我很困惑如何从目标表中“删除”它们。 有什么建议吗?

WITH tmp AS
(
    SELECT
     Code
    ,ROW_NUMBER() OVER(PARTITION BY Code ORDER BY Code) AS ROWNUMBER
    FROM CouponCode
)

SELECT *
FROM tmp
WHERE ROWNUMBER > 1 

2 个答案:

答案 0 :(得分:2)

基本上,您只需将select更改为delete

WITH tmp AS (
      SELECT Code, ROW_NUMBER() OVER(PARTITION BY Code ORDER BY Code) AS ROWNUMBER
      FROM CouponCode
)
DELETE tmp
    WHERE ROWNUMBER > 1;

答案 1 :(得分:2)

第1步

在临时表中选择不同的行:

SELECT DISTINCT Code, ExpiredDate 
INTO temp_CouponCode
FROM CouponCode

第2步

空原始表:

truncate table CouponCode

第3步

从临时表中复制数据:

INSERT INTO CouponCode
SELECT Code, ExpiredDate 
FROM temp_CouponCode

第4步

删除临时表:

DROP TABLE temp_CouponCode