比如:
表名; ta
字段: id, str ,max ddate
如果 存在 同一天 str 相同的记录 max 可以不相同  就删除先录入的记录
比如:
id    str    max  ddate
----  ----   ---   -----
5      你好   5    2006-7-25 15:46:008      你好   6   2006-7-25 16:01:00
就把id=5得记录删除     
请高手帮忙  希望你们都看清楚了。 id  是主键

解决方案 »

  1.   

    delete a
    from ta a (select max(id) as id from ta group by str) b
    where a.id <> b.id
      

  2.   

    --trydelete from ta
    where id in (select min(id) from ta group by str,convert(varchar(10),ddate,120) having count(*)>1)
    select * from ta
      

  3.   

    少一个“,”以下加上了。delete a
    from ta a ,(select max(id) as id from ta group by str) b
    where a.id <> b.id
      

  4.   

    楼上都有问题>这个可能没有问题delete a
    from ta a ,(select max(id) as id from ta group by str,convert(varchar(10),ddate,120)) b
    where a.id <> b.id
      

  5.   

    --個人覺得還是這樣好點
    delete ta where [id] not in (select max([id]) from ta group by [str])
      

  6.   

    --喔,還要同一天
    delete ta where [id] not in (select max([id]) from ta group by [str],convert(char(08),ddate,112))
      

  7.   

    呵呵。
    这种方法好多!LouisXIV(夜游神) 
    jjhlover(菜菜) 
    playwarcraft(三角褲叉叉的頂點) 的都是可以的!总体来说,playwarcraft(三角褲叉叉的頂點) 的应该是最好的。
      

  8.   

    playwarcraft(三角褲叉叉的頂點) 问你一个问题:
    convert(char(08),ddate,112))  这个我怎么都没有用过,什么意思?
      

  9.   

    playwarcraft(三角褲叉叉的頂點) 问你一个问题:
    convert(char(08),ddate,112))  这个我怎么都没有用过,什么意思?convert函数,数据类型转换函数,具体参见联机帮助。执行:
    select convert(char(08),getdate(),112)
    --结果--
    20060725
      

  10.   

    修改一下,请朋友们再看:
    表名; ta
    字段: id, str,str1 ,max ddate
    如果 存在 同一天 str和 “str1”    都 相同的记录 max 可以不相同  就删除先录入的记录
    比如:
    id    str   str1  max   ddate
    ----  ----  ----  ---   -----
    5      你好  我好 5    2006-7-25 15:46:008      你好  我好  6   2006-7-25 16:01:00
    就把id=5得记录删除     
    请高手帮忙  希望你们都看清楚了。 id  是主键
      

  11.   

    mssql  高手真多。 我算是见识了
      

  12.   

    convert(char(08),ddate,112)是類型轉換.
    比如ddate是2006-07-25 16:30:30,而你要同一天的,所以只要前面的date,而不要後面的time.
    這樣convert後是20060725 也就只有"天"了.
    當然那個112是顯示格式,具體可以參考 SQL的<線上說明>另外, 如果同一天的相同紀錄有3條,LouisXIV夜大俠的不知道會不會出錯.
      

  13.   

    如果 存在 同一天 str和 “str1”    都 相同的记录 max 可以不相同  就删除先录入的记录
    -----------------------------
    在group by 後面加上這個欄位就可以了;delete ta where [id] not in (select max([id]) from ta group by [str],[str1],convert(char(08),ddate,112))
      

  14.   

    playwarcraft(三角褲叉叉的頂點) 
    真谢谢你。昨天帮我解决一个难题,今天又帮了我。 
    谢谢。等你回复我就结贴
    你在哪个地方?
      

  15.   

    我全部做了测试:
    其中  playwarcraft(三角褲叉叉的頂點) ( ) 
    LouisXIV(夜游神) 是对的
     jjhlover(菜菜) ( ) 全部给删除了  今天的都没有了 
      

  16.   

    convert(char(08),ddate,112))  应该是将  ddate 转换成 char 数据类型
    其中112 是让格式为:yymmdd