2016-07-31 4 views
1

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

Обычно, если я хочу, чтобы обновить одну колонку, я следующий 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') 

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

+1

Гм, просто применить 'where' критерии ... – sgeddes

ответ

0

Вы можете использовать выражение 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 
         ); 

Edit:

Пожалуйста, проверьте это ..

SQL Fiddle HERE

+0

Я проверил вашу рекомендацию. Но это не сработало. При запуске я получил следующее сообщение: 0 строк затронуты. (Query took 0.0023 sec) –

+0

Как насчет того, чтобы мы сначала конвертировали пустые данные в spouses_total из «empty» в «0», возможно, это проблема? –

+0

@ Jay-Jay Я предоставил скрипт SQL, чтобы показать, что он работает нормально, посмотрите на 2 строки, один из которых имеет нулевое значение, измененное соответствующим образом, а другое нет. –

Смежные вопросы