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

How to update column if another column fulfill specific criteria?

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

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

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

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

这是我想要做的。

  1. 在table中查找:phpbb_tree
  2. 列下:spouses_total
  3. 如果字段为空(没有数据)
  4. 更新列:page_template
  5. 更新从:tree_body_spouse_1.html 到:tree_body_single.html

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

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