我的表结构是-
OBJID || Scheduled_Job_status || Started_On || scheduledJob2Order
我有一个表,其中存储有关运行统计信息的计划作业的详细信息。它基于ScheduledJob2Order + starts_on时间引用其他表。由于某些错误,它使用相同的startup_on时间和ScheduledJob2Order创建了多个记录。现在,我正在尝试添加一个约束,即它应仅创建1条具有相同Started_on时间的记录,但在此之前,我需要对当前重复记录进行更改。
我的问题是我无法删除重复的记录,但只能更新已经可用的started_on时间。另外,我只需要更新1条记录的started_on时间。假设我有3条重复的记录,其中我需要更新2条记录的started_on时间,但其余1条必须具有原始的started_on。
任何建议将不胜感激。
答案 0 :(得分:0)
为什么不能删除重复的记录?如果是因为在其他表的记录中引用了它们,那么您需要首先更改这些记录中的外键值以指向您将保留的记录。然后,一旦没有对重复项的引用,您应该可以使用类似的内容将其删除:
DELETE FROM tablex
WHERE OBJID NOT IN
(SELECT MIN(OBJID)
FROM tablex
GROUP BY scheduledJob2Order, Started_On)
同样,这假设您可以在清除引用后删除。如果没有,您应该能够使用带有类似Started_On
的{{1}}查询来更改UPDATE
来找到它们。
更新:根据下面的OP注释,这是如何更新WHERE NOT IN (SELECT MIN(OBJID)
列。对于任何重复的记录,它将日期设置为Jan-1-1900:
Started_On