mysql - 如果另一列满足特定条件,如何更新列?

标签 mysql sql phpbb

如果另一列有特定数据,我需要更新一列。

通常,如果我想更新一列,我会执行以下 SQL 查询:

UPDATE table1
SET field1 = replace(field1, 'oldstring', 'newstring')

但我想不通的是如何让它查找一列,如果该字段有一些数据,它应该更新另一列的字段。

这是我想做的。

  1. 查看表:phpbb_tree
  2. 列下:spouses_total
  3. 如果字段为空(没有数据)
  4. 更新列:page_template
  5. tree_body_spouse_1.html 更新为:tree_body_single.html

所以基本上,我知道如何进行“更新”部分,但不知道如何让它在一列中排在第一位,如果为空(或匹配),它应该执行以下操作:

UPDATE phpbb_tree
SET page_template = replace(page_template, 'tree_body_spouse_1.html', 'tree_body_single.html')

希望有人能告诉我怎么写。我什至不知道是否可以在列中搜索空数据?

最佳答案

您可以使用 CASE 表达式来满足不同的替换条件。

UPDATE phpbb_tree
SET  page_template = (CASE  
                        WHEN spouses_total is null  
                          THEN replace(page_template, 'tree_body_spouse_1.html', 'tree_body_single.html')            
                        ELSE page_template
                        END 
                       );

编辑:

请检查这个..

SQL Fiddle HERE

关于mysql - 如果另一列满足特定条件,如何更新列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38686527/

相关文章:

mysql - Active Record 查询/SQL 连接性能不佳

MySQL 添加长文本列使查询极其缓慢 - 有什么性能提示吗?

mysql - 索引多个数据库列的成本是多少?

SQL查询执行顺序

没有 php 的 PHPBB3 大量用户删除

PHPBB 3.0.8 奇怪的错误

mysql - 无法从 phpbb 连接到 docker 容器中的 mysql

php - 使用 PHP 从 SQL 数据库中获取信息

sql - 与非集群相比,外键列上的聚集索引是否可以提高联接性能?

php - 如何使用触发器在 SQL 中递增?