2013-04-29 91 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

相关问题