如何复制一行更改一列的ANY表

时间:2010-03-10 17:52:07

标签: sql copy row

我需要复制一行来改变PK。 每个客户端安装中的表可以不同,因此我不能只列举列。 我设法做了以下事情:

INSERT INTO table SELECT * FROM table WHERE PK='value'

但显然它失败了,因为我正在尝试复制PK。

然后我尝试了:

INSERT INTO table SELECT 'newValue' AS PK, * FROM table WHERE PK='value'

它也失败了,因为列名不匹配。

我知道PK将永远是第一列,但我不确定它有多大用处。

所以......这可能吗?有什么想法吗?

2 个答案:

答案 0 :(得分:7)

唯一的解决方案是通过查询列的列表并排除标识列来动态构建查询(这就是为什么我假设您希望跳过PK)。

答案 1 :(得分:2)

INSERT INTO table1 (col1_PK, col2 col3) 
SELECT newValue, col2, col3
FROM table1 
WHERE col1_PK = 'Value'