如何复制、修改记录,然后将它们插入到具有唯一 ID 的同一个表中?

问题描述 投票:0回答:1

“fruit”表有一列包含每行的唯一 ID,以及其他列。我需要从“fruit”中复制一些行,然后将其插入到“fruit”中,并对列进行一些更改,为每个记录生成下一个唯一 ID,并从表的最大 ID 中增加 1。

插入水果(id、大小、颜色、类型、分类) SELECT MAX(id) OVER() + ROW_NUMBER () OVER(ORDER BY id),尺寸,颜色,类型,'瓜') 来自水果 WHERE分类=柑橘

还有其他分类具有唯一的ID,因此当我创建查询并测试它时,它创建了新的甜瓜记录,但为它们分配的ID高于柑橘,但不高于其他分类,导致重复的ID。

sql-insert db2-400
1个回答
0
投票

要将记录复制、修改并插入到具有唯一 ID 的同一个“fruit”表中,您需要确保每个新记录都有唯一的标识符。您最初尝试使用

MAX(id)
ROW_NUMBER()
函数生成新 ID,但这种方法会导致不同分类出现重复 ID 的问题。

更有效的方法是首先通过查找当前最大 ID 并将其增加 1 来识别“fruit”表中的下一个可用唯一 ID。您可以使用子查询来实现此目的。然后,当您将修改后的记录插入到“fruit”表中时,将计算出的唯一 ID 分配给每个新记录。

确保您对复制的记录所做的修改(例如将“类型”和“分类”列设置为“瓜”)对于您要插入的所有记录都是一致的。通过这样做,您可以保证插入的记录具有所需的更改,同时保持其 ID 的唯一性。这种方法可以避免不同分类的重复 ID 问题,并确保数据的完整性。

© www.soinside.com 2019 - 2024. All rights reserved.