2011-06-28 84 views
43

所有各位專家一個簡單的MySQL的問題:更新MySQL的列

我有一個表table1有三列和一幫行:

[key_col|col_a|col_b] 

我想用一組值更新爲col_a (即離開col_b不變),如下所示:

INSERT INTO table1 AS t1 (key_col, col_a) VALUES ("k1", "foo"), ("k2", "bar"); 

不工作,我該怎麼做?

+1

**更新**答案是我正在尋找http://stackoverflow.com/questions/3432/multiple-updates-in-mysql – Muleskinner

+0

請選擇一個接受的答案這個問題。如果您發現另一個問題有幫助,請爲此帖創建一個答案,詳細說明您的成功。 – onebree

+0

'UPDATE table1 SET col_a ='new'WHERE key_col ='key';' –

回答

73

你必須使用UPDATE而不是INSERT的:

例如:

UPDATE table1 SET col_a='k1', col_b='foo' WHERE key_col='1'; 
UPDATE table1 SET col_a='k2', col_b='bar' WHERE key_col='2'; 
+0

所以你說我需要爲每一行更新我想寫的更新查詢? – Muleskinner

+0

你可以循環你的所有更新 – NAVEED

+0

閱讀這篇文章的多行更新: http://www.karlrixon.co.uk/articles/sql/update-multiple-rows-with-different-values-anda-a- single-sql-query/ – NAVEED

0

如果你想更新數據,你應該使用UPDATE命令代替的INSERT

4
UPDATE table1 SET col_a = 'newvalue' 

如果您只想更新某些行,請添加WHERE條件。

+0

你能給出一個例子,在相同的查詢中更新多行 – Muleskinner

+1

這將更新所有行。使用一個地方將其限制爲更少的行。 –

0

,如果你想補全列:

update 'column' set 'info' where keyID!=0; 
0

這就是我所做的批量更新:

UPDATE tableName SET isDeleted = 1 where columnName in ('430903GW4j683537882','430903GW4j667075431','430903GW4j658444015') 

希望這有助於你。