删除数据问题

alice鑫鑫 2010-03-04 03:19:01
id time
123aaa 2010-01-01 11:11:11
123bbb 2010-01-01 11:11:21
111aaa 2010-01-01 11:11:11
111bbb 2010-01-01 11:11:21
111ccc 2010-01-01 11:11:55
111ddd 2010-01-01 11:11:10
111eee 2010-01-01 11:11:12

要求删除数据,条件是 id前3位一样,并且时间相差10s的数据全删除
...全文
121 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
tangren 2010-03-04
  • 打赏
  • 举报
回复
--上面有点问题,这个
DELETE FROM test t
WHERE EXISTS (SELECT 1
FROM (SELECT a.id aid, b.id bid
FROM test a, test b
WHERE substr(a.id, 1, 3) = substr(b.id, 1, 3) AND
(b.time - a.time) BETWEEN 0 AND 1 / 8640)
WHERE aid NOT IN (SELECT aid
FROM (SELECT a.id aid, b.id bid
FROM test a, test b
WHERE substr(a.id, 1, 3) = substr(b.id, 1, 3) AND
(b.time - a.time) BETWEEN 0 AND 1 / 8640)
GROUP BY aid
HAVING COUNT(aid) = 1) AND
(t.id = aid OR t.id = bid));
alice鑫鑫 2010-03-04
  • 打赏
  • 举报
回复
这个问题有点不对,我想想,然后再讨论,谢谢大家,请稍定~~~~~~~~
tangren 2010-03-04
  • 打赏
  • 举报
回复
DELETE FROM test t
WHERE EXISTS (SELECT 1
FROM (SELECT *
FROM (SELECT id,
TIME,
lag(id) over(ORDER BY TIME) p_id,
lag(TIME) over(ORDER BY TIME) p_time
FROM test)
WHERE substr(id, 1, 3) = substr(p_id, 1, 3) AND
(TIME - p_time) / 86400 <= 10) a
WHERE a.id = t.id OR
a.p_id = t.id);
iqlife 2010-03-04
  • 打赏
  • 举报
回复
例如:

111aaa 2010-01-01 11:11:11
111bbb 2010-01-01 11:11:21
111ccc 2010-01-01 11:11:35
111ddd 2010-01-01 11:11:33
111eee 2010-01-01 11:11:45
111eee 2010-01-01 11:11:23

怎么删除
iqlife 2010-03-04
  • 打赏
  • 举报
回复
并且时间相差10s的数据全删除
这个是指前后紧挨的记录么的么?
iqlife 2010-03-04
  • 打赏
  • 举报
回复
先帮女人顶下!!!!
小灰狼W 2010-03-04
  • 打赏
  • 举报
回复
以以上数据为例,结果是什么样的

17,382

社区成员

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

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