2010-03-10 33 views
5

我需要複製一行改變PK。 該表可以在每個客戶端安裝中有所不同,所以我不能列舉列。 我已經成功地做到以下幾點:如何複製一列任意表改變一列

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

但很明顯,因爲我試圖複製PK失敗。

然後我嘗試:

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

它也沒有,因爲列名不匹配。

我知道PK將永遠是第一列,但我不確定它有多大用處。

所以......這可能嗎?任何想法?

回答

7

唯一的解決方法是通過查詢列的列表來動態構建查詢,並排除標識列(這就是爲什麼我假設您希望跳過PK)。

+0

當然,PK是主鍵的縮寫。 – raven 2010-03-10 17:58:16

+0

由於沒有更好的答案,我接受這個,這似乎是正確的。 – raven 2010-03-16 11:15:14

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

正如OP所說,他事先不知道列名。 – 2010-03-10 18:50:09