我有大量的行,我想复制,但我需要改变一个字段。
我可以选择我想要复制的行:
select * from Table where Event_ID = "120"
现在我想复制所有这些行并创建新行,同时将Event_ID设置为155。我怎样才能做到呢?
我有大量的行,我想复制,但我需要改变一个字段。
我可以选择我想要复制的行:
select * from Table where Event_ID = "120"
现在我想复制所有这些行并创建新行,同时将Event_ID设置为155。我怎样才能做到呢?
当前回答
假设你的表有另外两列:foo和bar
INSERT INTO Table (foo, bar, Event_ID)
SELECT foo, bar, "155"
FROM Table
WHERE Event_ID = "120"
其他回答
嘿,复制所有字段如何,将其中一个更改为相同的值+其他值。
INSERT INTO Table (foo, bar, Event_ID)
SELECT foo, bar, Event_ID+"155"
FROM Table
WHERE Event_ID = "120"
? ? ? ? ? ? ? ? ? ?
如果你的表中有很多列,你不想把每一列都打出来,你可以用一个临时表来做,比如;
SELECT *
INTO #Temp
FROM Table WHERE Event_ID = "120"
GO
UPDATE #TEMP
SET Column = "Changed"
GO
INSERT INTO Table
SELECT *
FROM #Temp
补充一下@DaveTheBFG的答案: 如果你有一个标识列(在下面的例子中是“Table_PK”),INSERT行将失败,但你可以这样做(特定于SQL server,但这个概念可能适用于其他数据库):
SELECT *
INTO #Temp
FROM Table WHERE Event_ID = "120"
UPDATE #TEMP
SET Column = "Changed"
ALTER TABLE #TEMP DROP COLUMN Table_PK
EXEC sp_executesql N'INSERT INTO Table SELECT * FROM #Temp'
假设你的表有另外两列:foo和bar
INSERT INTO Table (foo, bar, Event_ID)
SELECT foo, bar, "155"
FROM Table
WHERE Event_ID = "120"
只要Event_ID为Integer,执行以下操作:
INSERT INTO Table (foo, bar, Event_ID)
SELECT foo, bar, (Event_ID + 155)
FROM Table
WHERE Event_ID = "120"