【问题标题】:Remove non-unique ids rows删除非唯一 ID 行
【发布时间】:2009-03-03 22:58:41
【问题描述】:

从数据库备份中,我有没有唯一 ID 的记录。

有些记录有唯一的 ID。 一些具有重复 ID 的记录包含不同的 DateCreated 值。 一些具有重复 ID 的记录包含相同的 DateCreated 值。

我正在尝试获取 MSSql 2005 查询将只留下具有最​​新 DateCreated 值的唯一 ID 值。

来自

ID|    DateCreated  
1 |    1/1/09
2 |    1/2/09
2 |    2/2/09
3 |    1/3/09
3 |    1/3/09

ID|    DateCreated  
1 |    1/1/09
2 |    2/2/09
3 |    1/3/09

帮助

【问题讨论】:

    标签: sql sql-server unique


    【解决方案1】:
    DELETE FROM myTable AS t1 
    WHERE EXISTS (
        SELECT 1 FROM myTable AS t2 
        WHERE t1.ID=t2.ID AND t1.DateCreated<t2.DateCreated)
    

    即,删除具有相同 id 和较晚创建日期的另一行的任何行。

    【讨论】:

      【解决方案2】:
      create table #t ( id int, date datetime )
      
      insert #t 
      values(1, getdate())
      
      insert #t 
      values(1, getdate()+1)
      
      insert #t 
      values(1, getdate()-1)
      
      insert #t 
      values(2, getdate())
      
      insert #t 
      values(2, getdate()+1)
      
      delete t 
      from #t t
      left join (select id, min(date) as date from #t group by id) as t1 
          on t.id = t1.id and t1.date = t.date
      where t1.date is null
      

      【讨论】:

        猜你喜欢
        • 2018-07-16
        • 2020-08-08
        • 2011-09-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-08-25
        • 1970-01-01
        • 2014-03-23
        相关资源
        最近更新 更多