我想在一个MYsql查询中搜索并替换表列中的多个值

时间:2010-04-24 21:09:06

标签: mysql replace

查询到哪里X更新Y和哪里更新B在Mysql表列中。

如何在特定表中同一列的一个查询中在MYsql中执行此操作。 我想在表格列中搜索并替换多个值。

第1栏中table1的条件

Where X update Y 
and
Where a update b
and
Where 1 update 2
and
Where 3 update 4
and
Where value1 update value 2

等等。

我可以单独做到这一点,但我怎么能更快地做到这一点?是否有一个mysql函数来帮助我?

我有大约120列,每列有200个搜索和替换/更新值。

感谢。

2 个答案:

答案 0 :(得分:1)

您可以使用以下内容:

update table table set A = if(conditionA, newA, A), B = if(conditionB, newB, B)

但我希望它会比2次单独的更新慢,因为当它与条件不匹配时,它会尝试将每一行的值重置回自身。

您可以通过添加以下内容进行优化:

update table table set A = if(conditionA, newA, A), B = if(conditionB, newB, B)
where conditionA or conditionB

在某些情况下,这可能比2次查询更快。

答案 1 :(得分:0)

你可以这样做:

UPDATE table1
SET
    col1 = CASE WHEN col2 THEN a ELSE col1 END,
    col3 = CASE WHEN col4 THEN b ELSE col3 END

请注意,如果条件失败,则会将值设置回自身,从而有效地使其保持不变。