Как обновить столбец, если другой столбец соответствует определенным критериям?

Мне нужно обновить один столбец, если другой столбец содержит конкретные данные.

Обычно, если я хочу обновить один столбец, я делаю следующий SQL-запрос:

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

Но я не могу понять, как заставить его искать один столбец, и если в этом поле есть какие-то данные, оно должно обновить поле другого столбца.

Вот что я хочу сделать.

  1. посмотрите в таблицу: phpbb_tree
  2. под столбцом: супруги
  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')

Надеюсь, кто-нибудь скажет мне, как это написать. Я даже не знаю, возможно ли вообще выполнить поиск пустых данных в столбце?

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 ЗДЕСЬ

Другие вопросы по тегам