我有一個數據庫表,已經有一個我不需要觸摸的現有值。當我嘗試打電話給我的SQL就像這樣:使用現有值進行重複密鑰更新的問題?
我的表目前看起來是這樣的:
id col1 col2
5 10
$ SQL =「INSERT INTO sometable(ID,COL2)VALUES(5,20) 對重複KEY UPDATE id = 5「;
我希望表看起來像這樣我的後插入:
id col1 col2
5 10 20
有沒有辦法做到這一點不使用更新?
我有一個數據庫表,已經有一個我不需要觸摸的現有值。當我嘗試打電話給我的SQL就像這樣:使用現有值進行重複密鑰更新的問題?
我的表目前看起來是這樣的:
id col1 col2
5 10
$ SQL =「INSERT INTO sometable(ID,COL2)VALUES(5,20) 對重複KEY UPDATE id = 5「;
我希望表看起來像這樣我的後插入:
id col1 col2
5 10 20
有沒有辦法做到這一點不使用更新?
假設id是關鍵
這
INSERT INTO sometable (id, col2) VALUES (5, 20)
ON DUPLICATE KEY UPDATE id = 5
說來更新id字段到5(UPDATE ID =5
)。如果ID爲5,因爲這隻會工作,是沒有意義的
你想要的是要麼
INSERT INTO sometable (id, col2) VALUES (5, 20)
ON DUPLICATE KEY UPDATE col2 = 20;
或者,如果你要引用的值,如果有則沒有重複的Wilken suggested使用它會一直COL2 = VALUES(COl2)
使用VALUES()
INSERT INTO sometable (id, col2) VALUES (5, 20)
ON DUPLICATE KEY UPDATE col2 = VALUES(col2);
+1。 (我通常試圖包含一個'SET'關鍵字來弄亂語法,並且必須再次查看文檔。) – spencer7593
檢查了這一點的一個很好的例子: MySQL: Insert On Duplicate
很好的例子,但我的查詢仍然抱怨第二列(col1)沒有默認值。 .. – Paul
@保羅哦,你沒有在你原來的問題中說過。如果col1不可爲空且沒有指定缺省值,那麼如果不將其包含在列列表中,則「INSERT」部分將不起作用。你真的想要插入嗎?如果您想插入col1,col1的值應該是多少? –