重复数据的删除语句问题!

zengqz 2010-04-27 08:58:29
表 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的


...全文
72 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
vber1010 2010-04-27
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 zengqz 的回复:]
引用 1 楼 codearts 的回复:
楼主是要这个吧?

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 )
wh……
[/Quote]
order by 在这里实际没什么用,凑语法就是了。完全可以写成order by 1。
zengqz 2010-04-27
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 codearts 的回复:]
楼主是要这个吧?

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 ……
[/Quote]
哈哈.没错....
有没有通俗解释下 order by 在其中的作用..
halaxiaoxuan 2010-04-27
  • 打赏
  • 举报
回复
在观望
小灰狼W 2010-04-27
  • 打赏
  • 举报
回复
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)
;
codearts 2010-04-27
  • 打赏
  • 举报
回复
楼主是要这个吧?

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)

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧