2013-04-29 94 views
-4

我有一堆字段,每天會改變(新的一個添加或舊的刪除)的表。我需要知道如何將除主鍵以外的所有字段更新爲NULL。這是我的表格的一個例子。MySql更新所有字段,但一個

id = Primary Key 
Field1, Field2, Field3, Field4, Field5 

除主鍵以外的所有字段都具有默認值NULL。我只需要爲特定記錄執行此操作。所以改變表格定義將不起作用。

Update table set <all fields except id> = NULL where id=12 
+0

哪些條件定義哪些記錄進行修改? – Barranka 2013-04-29 20:56:55

+0

除了名爲id的主鍵以外,每個字段都需要更改爲NULL(默認值)。 – 2013-04-29 20:59:05

+1

有沒有辦法告訴MySQL更新每個領域*除了* 1 ...你必須手動提供字段列表(或寫一個腳本在另一種語言,在運行時構造字段列表) – Barranka 2013-04-29 21:11:54

回答

1
update your_table 
set field1 = null, field2 = null, field3 = null 
where id = 123 
+0

這將無法正常工作,例如field1可能會被刪除,並且這個語句會失敗。 – 2013-04-29 20:55:58

+0

如果您在運行時更改表定義,則應更改策略。表格定義應該是固定的。 – 2013-04-29 20:58:06

+0

@EricSietsema你不能「刪除」一列。你可以'ALTER''TABLE','DROP''COLUMN'。這是你將要做什麼,經常改變桌子? – 2013-04-29 20:58:48

1
update yourTable 
set field1 = null, field2 = null, ... -- Every field you need 
where ... -- The conditions that define which records you are going to update 
+0

這將不作爲field1,可能已被刪除。自命令寫入後,可能會添加其他字段,字段25。桌子總是在變化。 – 2013-04-29 20:59:57

+1

「改變」是什麼意思?如果它意味着列被添加到表中,那麼你的數據庫設計就有一個**非常大的問題,應該看看數據庫規範化 – Barranka 2013-04-29 21:09:46