目前我有这样的表:
+---------+---------+---------+---------+---------+
| 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.'方面在除特定列之外的所有列中?
答案 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;
的列,然后在这些列上循环(除了您不想要的列)以构建更新查询