更新除特定列之外的查询

时间:2014-06-30 21:45:39

标签: php mysql mysqli

目前我有这样的表:

+---------+---------+---------+---------+---------+
| column1 | column2 | column3 | column4 | column5 |
+---------+---------+---------+---------+---------+
| n.v.t.  | n.v.t.  | n.v.t.  | n.v.t.  | n.v.t.  |
+---------+---------+---------+---------+---------+
| n.v.t.  | value   | n.v.t.  | value   | n.v.t.  |
+---------+---------+---------+---------+---------+
| n.v.t.  | n.v.t.  | n.v.t.  | n.v.t.  | n.v.t.  |
+---------+---------+---------+---------+---------+

显然这是一个简短的版本。目前我想要一个替换所有'n.v.t'的查询。在列1和列2中的所有列中除外。我所做的是使用标准的UPDATE查询执行此操作。 (SET column2 ='replace_value'WHERe)等。

有什么办法可以缩短时间吗?在替换所有'n.v.t.'方面在除特定列之外的所有列中?

2 个答案:

答案 0 :(得分:2)

您可以这样做:

update table t
    set col3 = (case when col3 = 'n.v.t' then 'newvalue' else col3 end),
        col4 = (case when col4 = 'n.v.t' then 'newvalue' else col4 end),
        . . .
        coln = (case when coln = 'n.v.t' then 'newvalue' else coln end)

即,如果合适,使用替换值。否则,将列设置为自身。

答案 1 :(得分:1)

您可以通过编程方式获取SHOW COLUMNS FROM mydb.mytable;的列,然后在这些列上循环(除了您不想要的列)以构建更新查询