2016-07-31 2 views
1

다른 열에 특정 데이터가있는 경우 하나의 열을 업데이트해야합니다. 보통 나는 하나의 열을 업데이트 할 경우다른 컬럼이 특정 기준을 충족시키는 경우 컬럼을 업데이트하는 방법은 무엇입니까?

, 나는 다음과 같은 SQL 쿼리 수행

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

하지만 내가 이해할 수없는 것은 해당 필드가 일부있는 경우는 하나의 열을 보이게하는 방법을이다 데이터가 있으면 다른 열의 필드를 업데이트해야합니다.

내가 원한다. 테이블에

  1. 보기 : phpbb_tree 열에서
  2. : spouses_total
  3. 필드 (데이터가없는) 비어있는 경우
  4. 업데이트 열 : page_template
  5. Update에서 : tree_body_spouse_1.html to : 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 
         ); 

편집 :

이를 확인하시기 바랍니다 ..

SQL Fiddle HERE

+0

나는 당신의 추천을 테스트했다. 그러나 그것은 효과가 없었습니다. 나는 그것을 실행할 때 다음과 같은 메시지를 얻었습니다. 0 행이 영향을 받았습니다. (쿼리는 0.0023 초 걸렸습니다.) –

+0

spouses_total의 빈 데이터를 "empty"에서 "0"으로 변환하는 방법은 어떨까요? –

+0

@ Jay-Jay 필자는 SQL 피들 (fiddle)을 사용하여 2 행 (1 행에 null 값이 수정 됨)이 아닌 다른 행이 올바르게 작동 함을 보여줍니다. –

관련 문제