当前位置:首页
开发技术指南» 文章正文
    引言:
 

 

    摘要: 我在用bcb5做报表的时候,在预览关闭的时候它就出错了.错误信息为: invalid floating point operation 怎样才能解决呢? 急啊. 在线等. ......
 ·需找dephi高手    »显示摘要«
    摘要: 我急需要找一位杭州dephi高手指导,有兴趣的与我联系,13958196875,姓陈! ......


一个表有多条纪录出主键外其他字段的值都相同,怎样消除这样的重复记录

一个表有多条纪录出主键外其他字段的值都相同,怎样消除这样的重复记录?  
   
  如   tb_mytable  
  tb_id(主键)         field1,       filed2  
   
  1 a1 b1  
  2 a2 b2  
  3 a2 b2  
  4 a3 b3  
  我想要的纪录为  
  1 a1 b1  
  3 a2 b2  
  4 a3 b3  
   
  注:重复纪录中取tb_id最大的  
 

NO.1   作者: pengdali

select   *   from   tb_mytable   别名   where   tb_id=(select   max(tb_id)   from   tb_mytable   where   field1=别名.field1   and   field2=别名.field2)

NO.2   作者: happydreamer

delete   tb_mytable    
  where   tb_id   not   in    
  (select   tb_id   from   tb_mytable   a   where   tb_id=(select   max(tb_id)   from   tb_mytable  
  where   field1=a.field1   and   field2=a.field2)

NO.3   作者: yoki

删除重复数据  
   
  一、具有主键的情况  
  a.具有唯一性的字段id(为唯一主键)  
  delete   table    
  where   id   not   in    
  (  
  select   max(id)   from   table   group   by   col1,col2,col3...  
  )  
  group   by   子句后跟的字段就是你用来判断重复的条件,如只有col1,  
  那么只要col1字段内容相同即表示记录相同。  
   
  b.具有联合主键  
  假设col1+,+col2+,...col5   为联合主键  
  select   *   from     table   where   col1+,+col2+,...col5   in   (  
      select   max(col1+,+col2+,...col5)   from   table    
  where   having   count(*)>1  
  group   by   col1,col2,col3,col4    
  )  
  group   by   子句后跟的字段就是你用来判断重复的条件,  
  如只有col1,那么只要col1字段内容相同即表示记录相同。  
   
  c:判断所有的字段  
      select   *   into   #aa   from   table   group   by   id1,id2,....  
      delete   table    
      insert   into   table    
      select   *   from   #aa  
   
  二、没有主键的情况  
   
  a:用临时表实现  
  select   identity(int,1,1)   as   id,*   into   #temp   from   ta  
  delect   #temp    
  where   id   not   in    
  (  
      select   max(id)   from   #   group   by   col1,col2,col3...  
  )  
  delete   table   ta  
  inset   into   ta(...)  
        select   .....   from   #temp  
   
  b:用改变表结构来实现  
  alter   table   表   add     newfield   int   identity(1,1)  
  delete   表  
  where   newfield   not   in  
  (  
  select   min(newfield)   from   表   group   by   除newfield外的所有字段  
  )  
   
  alter   table   表   drop   column   newfield

NO.4   作者: shuiniu

delete     from   tb_mytable  
  where   tb_id   not   in  
  (  
  select   max(tb_id)   from   tb_mytable     group   by   field1   ,filed2  
  )


 ·关于产生随机数的菜问题    »显示摘要«
    摘要: 有一个工程,其中有一部分需要实现以下要求: 随机产生750个,由0,1组成,长度为45的随机向量; 然后把这750向量等分成5组,每组有个标识。 请问怎么实现? ......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE