【发布时间】:2020-03-28 18:22:59
【问题描述】:
所以这个查询语句看起来很简单,但实际上并不那么容易。 这是我尝试过的代码。
Delete from table where id
In (select id from (select
id, row_number()
over(partition by id)
rn from table where rn>1)
上述方法可以工作,但对于几乎所有数据库来说,这不是标准的 sql,例如 partition by 在大多数其他数据库中可能不受支持。我在下面尝试的是可以使用 group by。我在下面尝试过,但我不确定这是否可行。任何建议以及优化哪一个
//using group by
Delete from table where id
In (select id from(select
id from table
Group by id
Having sum(1)>1)
)
【问题讨论】:
-
这能回答你的问题吗? Delete duplicate rows in Oracle SQL, leaving the latest entries('First' vs 'Latest' 只是排序问题。)