查询到哪里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个搜索和替换/更新值。
感谢。
答案 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
请注意,如果条件失败,则会将值设置回自身,从而有效地使其保持不变。