表 check 的字段 checkid  manid  checkitem   chkdate   operatedate数据库因为出现了重复数据.但是重复数据.并不是完全一样的
因为是由于按钮及网络的延迟性导致的,连续单击保存按钮就会创建出来
其中的 checkid 由于是后台 guid 生成..所以这样所谓的重复数据是
checkid不一样,operatedate 差几秒 
manid  checkitem chkdate(保存到天) 这三字段都一样附:因为我这个检查,每一个人一天只能检查一次 网上有看到
SELECT * from check 
where rowid in (select row1 
                   from (select rowid row1, 
                                row_number() over(partition by manid order by rowid) lev 
                           from check ) 
                  where lev > 1)觉得跟我要的效果有差..我是想有没有地方可能 通过 man,checkitem,chkdate 来判断唯一性,
就是这样子来内部分组,再删掉lev>1的

解决方案 »

  1.   

    楼主是要这个吧?SELECT * from check  
    where rowid in (select row1  
      from (select rowid row1,  
      row_number() over(partition by man,checkitem,chkdate order by rowid) lev  
      from check )  
      where lev > 1)
      

  2.   

    select * from check t
    where exists( 
      select 1 from check
      where manid=t.manid and checkitem=t.checkitem and chkdate=t.chkdate
        and checkid<t.checkid)
    ;delete from check t
    where exists( 
      select 1 from check
      where manid=t.manid and checkitem=t.checkitem and chkdate=t.chkdate
        and checkid<t.checkid)
    ;
      

  3.   

    哈哈.没错....
    有没有通俗解释下 order by 在其中的作用..
      

  4.   

    order by 在这里实际没什么用,凑语法就是了。完全可以写成order by 1。