【发布时间】:2021-08-02 19:22:05
【问题描述】:
我有两个表reminder 和reminder_users,在这些表之间有一个外键约束,reminder_users 是子记录。我想要做的是删除这些拖表中的几个冗余行。到目前为止,我设法通过以下查询找到冗余行:
select r.name, r.remark, u.user_id, u.deadline , count (*)
from reminder r
inner join reminder_users u on r.id = u.reminder_id
and u.user_id = u.user_id
and u.deadline = u.deadline having count(*)> 1
group by r.name, r.remark, u.user_id, u.deadline
所以冗余行与外键id绑定,子记录具有相同的user_id和deadline,父记录具有相同的名称和相同的备注。
having count 子句指出了多余的行,但我想保留其中一条记录,以便计数 > 1 不再为真,因此我不能在删除查询中使用此子句.此外,为了能够从提醒中删除行,首先必须删除来自提醒用户的子数据。
我猜想使用rowid 和select max (rowid) 之类的东西应该有可能,但我不知道如何构建删除查询。
非常感谢任何帮助!
【问题讨论】:
标签: oracle duplicates sql-delete record