如何使用TSQL删除所需的重复条目?

时间:2011-08-17 13:22:31

标签: sql-server-2005 tsql

我需要从表中删除重复项。我得到了这样的重复: -

SELECT col1
FROM table_01
GROUP BY col1
HAVING ( COUNT(col1) > 1)

table_01有另一列'col2',它是nvarchar ,包含日期和时间。此col2还具有 NULL 。现在如何保持最新的条目(按日期)并删除其他重复项。我没有线索? PL。帮助

2 个答案:

答案 0 :(得分:3)

;WITH x AS 
(
  SELECT col1, 
    rn = ROW_NUMBER() OVER
    (
      PARTITION BY col1 
      ORDER BY CONVERT(DATETIME, COALESCE(col2, '19000101')) DESC
    )
  FROM table_01
)
DELETE x WHERE rn > 1;

答案 1 :(得分:1)

相关子查询的神奇之处。您说这两个记录对于包含日期的另一列有不同的值,您想要删除旧记录吗?

DELETE FROM tablea
WHERE tablea.dateentered < (SELECT MAX(i.dateentered)
                            FROM tablea i
                            WHERE tablea.id = i.id)