删除没被引用的重复数据

xuantian868 2010-07-01 11:29:45
现在表T1 中有很多重复的数据。表T2,T3 有引用T1表的id字段。
如何用sql或存储过程删除没有被T2和T3引用的T1表的重复数据。。(T1中根据unid来判断是否重复)
表结构下,T2,T3 的recId是 T1的id
T1
id name unid


T2
id p1 recId


T2
id p2 recId

-------查询T1中重复的数据
select * from(
select unid,count(unid) con,max(id) from T1 group by unid
) where con>1
...全文
71 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
iqlife 2010-07-01
  • 打赏
  • 举报
回复
DELETE FROM T1
WHERE unid IN
select DISTINCT unid from T1
where T1.id NOT IN (
SELECT T2.recId FROM T2
UNION
SELECT T3.recId FROM T3
)
AND rowid!=(select max(A.rowid) from T1 A WHERE A.unid=T1.uni))
gelyon 2010-07-01
  • 打赏
  • 举报
回复
查询出满足删除的重复数据:
select id, max(rowid) max_rowid from T1 where not exists (select '*' from T2 where recId = id union all select '*' from T3 where recId = id) group by unid having count(unid)>1

删除对应的ID
delete from T1 where rowid !=max_rowid and id = id(上面查询出来的)

17,078

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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