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

时间:2016-07-31 17:17:17

标签: 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
  6. 基本上,我知道怎样做"更新"部分,但不知道如何让它在一列中首先看,如果是空(或匹配),它应该执行以下操作:

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

    希望有人可以告诉我如何写出来。我甚至不知道是否可以在列中搜索空数据?

1 个答案:

答案 0 :(得分:1)

您可以使用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