gpt4 book ai didi

sql - 如何通过 OID 删除一条记录?

转载 作者:行者123 更新时间:2023-11-29 14:10:01 26 4
gpt4 key购买 nike

我有一个奇怪的案例,我不知道它是怎么发生的。

这是我的 table :

id
date
amount

其中 id 不能为 NULL 并且会自动增加。

去年有人系统造成如下情况:

OID        id     date    amount
710604512 197 2015-03-11 10657.61
710604513 197 2015-03-11 10657.61

这会导致很大的问题,因为 id 应该是唯一的。
我无法通过常规 SQL 修复此问题,因为我将执行的任何操作都将在两行上完成。

其中一个需要删除。

删除和插入一个的解决方案是 Not Acceptable ,因为我不能玩日期(它记录创建日期并且日志会显示它)

如何通过 OID 删除行?

最佳答案

如果你想删除较小OID的记录,如果出现重复,那么你可以试试这个:

WITH cte AS (
SELECT *,
ROW_NUMBER() OVER (PARTITION BY id, date, amount ORDER BY OID DESC) AS rn
FROM yourTable
)
DELETE FROM cte WHERE rn=2; -- or rn >=2 to delete all duplicates

要删除具有更大 OID 的记录,只需将ORDER BY 子句更改为:

ORDER BY OID

关于sql - 如何通过 OID 删除一条记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42468094/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com