0

我有下表: 在此处输入图像描述

我正在处理一个程序,该程序接受行 ID eg.5 并将其复制到 ID 为 6 的新行中。通过这样做,我必须将项目 6 的进程 ID 更新为 7、7 到 8、8 到 9 , 9 到 10 和 10 到 11。

这样做的最好方法是什么?

我对 SQL 操作一无所知,因此将不胜感激任何帮助。

4

2 回答 2

1

假设您的 ID 始终是连续的,您需要UPDATE在执行 new 之前先查看您的表INSERT

UPDATE YourTable
SET ID = ID + 1
WHERE ID >= 6

然后你可以运行你的INSERT语句来复制第 5 行。

话虽如此,这样做的目的是什么?重新考虑您的餐桌设计可能更有意义。

编辑 - 如果您还需要插入

如果您还需要执行INSERT,那么这应该使用INSERT INTO

INSERT INTO YourTable 
SELECT 6, NextCol, NextCol, ...
FROM YourTable
WHERE ID = 5

基本上你必须提供每一列。不过,在运行UPDATE. 如果您在此字段上有一个身份,那么这不一定有效。取决于您的表结构。

于 2013-03-28T16:24:22.323 回答
0

问题有点不清楚您是在寻找插入还是更新。对于插入,您可以使用以下方法执行以下操作cross join

Sql-Fiddle 演示

insert into YourTable (ID, SupplierId, Title,...)
select MyID, SupplierId, Title, ...
from YourTable cross join (values (6),(7),(8),(9),(10),(11)) 
          AS temp(MyId)
where YourTable.ID = 5

如果 ID 是一个自动递增的字段,则从字段列表中删除 ID 和 MyID。

于 2013-03-28T17:09:49.047 回答