除了其中一些列之外,复制所有列

时间:2013-10-03 11:47:21

标签: sql-server sql-insert

是否可以选择在sql server中复制行而不写入所有列?我只想写自己要插入的列。

例如:

MYTABLE:

Id|Name|Status|Date
-------------------
2|abca|active|03.10

所以我可以这样做:

INSERT INTO MYTABLE (Id, Name, Status, Date )
SELECT NEWID(), "bird", status, Date
  FROM MYTABLE 
 WHERE Id = "2"

它将复制该行:

Id  |Name|Status|Date
-------------------
2   |abca|active|03.10
fg35|bird|active|03.10

除了我写的内容外,我不能复制所有列吗?

在这个例子中

: 像(伪代码):

复制MYTABLE中Id =“2”的所有列,除了(id =“newID()”,name =“bird”)

1 个答案:

答案 0 :(得分:1)

不,在SQL Server中,您需要为所有列提供所有值:

INSERT INTO TableName VALUES(value1, value2, ...)

或提供要插入的列

INSERT INTO TableName (column1, column2, ...) VALUES(value1, value2, ...)

在一般意义上,你无法实现自己想要的目标。

在某些特定情况下,可能有一种方法可以购买重复所有列并更新一些但这取决于您是否能够区分新插入的行与之前存在的行。