有表 H 
字段 NUMBER         DATE
1     12345  2009-02-20 15:55:42.000
2     12345  2008-01-20 16:35:12.000
3     54321  2009-03-20 06:43:51.000
4     54321  2007-12-09 14:15:43.000
请问如何删除 DATE 较早的那个记录
例从记录1,2中删除记录2
从记录3,4中删除记录4
  

解决方案 »

  1.   


    delete from 表H
    where not exists(select 1 from 表H b where 表H.NUMBER=b.NUMBER and 表H.DATE>b.DATE)
      

  2.   

    delete t from H t where exists(select 1 from H where Number=t.Number and Date>t.Date)
      

  3.   

    delete from H where DATE = min(DATE )
      

  4.   


    --> 测试数据: @H
    declare @H table (字段 int,NUMBER int,DATE datetime)
    insert into @H
    select 1,12345,'2009-02-20 15:55:42.000' union all
    select 2,12345,'2008-01-20 16:35:12.000' union all
    select 3,54321,'2009-03-20 06:43:51.000' union all
    select 4,54321,'2007-12-09 14:15:43.000'delete @h from @h a where  exists(select 1 from @h where number=a.number and date>a.date)select * from @H
      

  5.   

    delete a
    from 
     H a,
     (select NUMBER,[DATE] from H t where not exists(select 1 from H where NUMBER=t.NUMBER and [DATE]<t.[DATE]) b
    where a.NUMBER=b.NUMBER and a.[DATE]=b.[DATE]
      

  6.   

    delete from H where DATE = (select min(DATE ) from H)
      

  7.   


    delete t from H  where exists(select * from H where Entryid%2=0)
    来个不一样的,删除ID字段为偶数的
      

  8.   

    DELETE FROM表H
    WHERE NOT EXISTS(SELECT1 FROM表H b WHERE 表H.NUMBER=b.NUMBER and表H.DATE>b.DATE
      

  9.   

    晕!你这个SQL 相当于
    DELETE FROM H
      

  10.   

    晕!你这个SQL 相当于SQL code
    DELETE FROM H
      

  11.   

    先按Number分组统计取出最小日期Min(Date), 再通过 Number, 最小日期Min(Date)
    连接删除delete H
        from
        (select Number, min(Date) as Date
            from H
            group by Number
        ) as v
        where H.Number = v.Number and 
                H.Date = v.Date
      

  12.   


    delete @h from @h a where not exists(select 1 from @h where number=a.number and date<a.date)
      

  13.   

    select * from #tt a inner join (select c1,min(c2) as c2 from #tt group by c1) b 
                            on a.c1=b.c1 and a.c2=b.c2
      

  14.   

    回错了,是delete from #tt a inner join (select c1,min(c2) as c2 from #tt group by c1) b 
                            on a.c1=b.c1 and a.c2=b.c2
      

  15.   


    declare @H table (字段 int,NUMBER int,DATE datetime)
    insert into @H
    select 1,12345,'2009-02-20 15:55:42.000' union all
    select 2,12345,'2008-01-20 16:35:12.000' union all
    select 3,54321,'2009-03-20 06:43:51.000' union all
    select 4,54321,'2007-12-09 14:15:43.000'delete @h from @h t where 字段 = (select top 1 字段 from @h where number=t.number order by date)select * from @H
    /*
    字段          NUMBER      DATE
    ----------- ----------- -----------------------
    1           12345       2009-02-20 15:55:42.000
    3           54321       2009-03-20 06:43:51.000(2 行受影响)
    */
      

  16.   


    delete a from tableName a where not exists (select 1 from tableName  where number=a.number and and date>a.date)
      

  17.   

    delect from h where data in (select min(date) from h)
      

  18.   

    delete from H exists(select 1 from H t  Where t.number=H.number and t.date>H.date)
      

  19.   


    create table H 
    (
    字段 int,
    NUMBER int,
    DATE datetime
    )
    insert into H
    select 1,12345,'2009-02-20 15:55:42.000' union all
    select 2,12345,'2008-01-20 16:35:12.000' union all
    select 3,54321,'2009-03-20 06:43:51.000' union all
    select 4,54321,'2007-12-09 14:15:43.000'delete a from H a where exists(select 1 from H where number=a.number and date>a.date)select * from H/*
    字段          NUMBER      DATE
    ----------- ----------- -----------------------
    1           12345       2009-02-20 15:55:42.000
    3           54321       2009-03-20 06:43:51.000(2 行受影响)
    */