复制同一个表中的行并更新ID列

kal*_*lls 29 sql sql-server

我有下表

替代文字

我已经将产品B插入其中,它给我一个15的ID

然后我有定义表,如下所示.

替代文字

我想选择ProdID = 14的ProductDefinition行并复制它们并将其插入ProdID = 15,如下所示

替代文字

如何使用SQL代码实现这一目标?

Blr*_*rfl 58

INSERT INTO ProuctDefinition (ProdID, Definition, Desc)
SELECT
  xxx, Definition, Desc
FROM
  ProductDefinition
WHERE
  ProdID = yyy
Run Code Online (Sandbox Code Playgroud)

xxx是你的新ProdID,yyy是你的旧产品.这也假定DefID自动填充INSERT.


Don*_*ell 11

这适用于您选择的任何列.不只是主键/ ID.

INSERT INTO TableName (Column1, CustomID, Column3, Column4, Column5)
SELECT Column1, 'NewValue', Column3, Column4, Column5 FROM TableName
WHERE CustomID='OrigValue'
Run Code Online (Sandbox Code Playgroud)


小智 5

如果你想选择所有项目(在表不包含任何主键的情况下)

INSERT INTO [tabelName]
SELECT  * FROM    [tabelName]
WHERE  (YourCondition)
Run Code Online (Sandbox Code Playgroud)

如果表包含主键,则仅选择非主键的列,例如:

INSERT INTO [tabelName]
SELECT  col_1,col_2,col_n FROM    [tabelName]
WHERE  (YourCondition)
Run Code Online (Sandbox Code Playgroud)