【问题标题】:I want to search and replace multiple values in a table column in one MYsql query我想在一个 MYsql 查询中搜索和替换表列中的多个值
【发布时间】:2010-04-24 21:09:06
【问题描述】:

查询 Mysql 表列中 X 更新 Y 和 A 更新 B 的位置。

如何在 MYsql 中对特定表中的同一列进行一次查询。 我想在一个表格列中搜索和替换多个值。

table1中column1中的条件

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 个搜索和替换/更新值。

谢谢。

【问题讨论】:

  • 或者,如果这不可能,也请告诉我,所以我不再为以创新的方式完成这项工作而烦恼。
  • 你的问题很混乱。 Where 1 update 2 是什么意思。在这种情况下,1 是什么?它来自哪里?

标签: mysql replace


【解决方案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 次查询更快。

【讨论】:

    【解决方案2】:

    你可以这样做:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-09-25
      • 2011-03-24
      • 1970-01-01
      • 1970-01-01
      • 2017-04-15
      • 1970-01-01
      • 2022-01-21
      • 1970-01-01
      相关资源
      最近更新 更多