2014-04-28 4 views
0

목표는 표 1을 표 2에 연결하고 표 1이 기본값이 아닐 때 표 1을 채우는 것입니다.MySQL - IF 문을 사용하는 다중 열 UPDATE 문

예 :

UPDATE table1 aa, table2 bb 
SET aa.column2=IF(aa.column2=0,bb.column2,aa.column2) and aa.column3=IF(aa.column3=0,bb.column3,aa.column3)... Total of 5 columns being updated 
WHERE aa.column1=bb.column1; 

이 실행

나는 가난한 인구를받을 수 있습니다. 그러나 SET 행에서 IF 문 하나만 제외하면 모든 것이 의도 한대로 작동합니다.

나는 MySQL에 익숙하지 않으므로 누구나 제공 할 수있는 도움이 있으면 크게 감사 할 것입니다.

+0

"poor population"? 실제로 무엇을 얻나요? – Andrew

+0

Andrew - 빈약 한 인구로 인해 필자는 (필자의 진술이 올바르게 작성되었다고 가정 할 때) 채워져 있지 않은 컬럼을 언급하고있다. 예를 들어, 두 개의 테이블 사이에 고유 한 결합이있는 것으로 확인 된 여러 제어 행을 발견했습니다. 내 제어 행 몇 가지 위의 문을 사용하여 채워지지 않습니다. 그러나 SET 문에서 하나의 열을 제외한 모든 열을 제거하면 제어 행이 채워집니다. AND를 제거하고 지금까지 쉼표를 붙임으로써 내가 찾고 있던 결과를 받았습니다. – user3582260

답변

0

명시 적으로 join 구문을 사용하는 것이 좋습니다. 그러나 더 중요한 것은 문을 연결하는 데 and을 사용하지 않는 것입니다. 불리언 연결에는 and을 사용하고 set 문에는 ,을 사용합니다. 이것은 쿼리가 어떻게 해석되는지에 큰 영향을 미친다.

이 시도 :

UPDATE table1 aa JOIN 
     table2 bb 
     ON aa.column1=bb.column1 
    SET aa.column2=IF(aa.column2=0,bb.column2,aa.column2), 
     aa.column3=IF(aa.column3=0,bb.column3,aa.column3), 
     ... Total of 5 columns being updated; 
+0

빠른 응답을 보내 주셔서 감사합니다. 논리가 이치에 맞습니다. 몇 가지 쿼리를 통해 테스트 해보고보다 일관된 결과를 제공 할 수 있기를 바랍니다. 다시 한 번 감사드립니다! – user3582260

0

사용 대신 and 콤마. 쉼표는 구분 기호이며 and은 연산자입니다.