2013-07-27 3 views
1

두 테이블을 병합하고 싶습니다. 그러나 mysql에서 stroefrocedure로 union을 모두 사용할 때 제로가 제거됩니다. 우리는 노동 조합을 모두 사용할 때Mysql union 0을 제거하십시오.

TBL1: 

ID VAL1 VAL2 
2 3 3 
3 3 0 

TBL2 

ID VAL1 VAL2 
3 0 3 
4 0 4 

Select ID,VAL1,VAL2 FROM TBL1 
UNION ALL 
Select ID,VAL2,VAL2 FROM TBL2; 

ERROR RESULT: 
    ID VAL1 VAL2 
    2 3 3 
    3 3  
    3  3 
    4  4 

RIGHT RESULT: 
    ID VAL1 VAL2 
    2 3 3 
    3 3 0 
    3 0 3 
    4 0 4 

어떻게 제로 값을 유지하기 위해 다음과 같은

두 테이블? 같은 일이 당신과 함께 경우

감사합니다,

+0

[재생할 수 없습니다. ce] (http://sqlfiddle.com/#!2/cb003/1). 또한 약간의 문제가 있습니다 (두 번째 테이블에서 Val2를 두 번 선택했습니다). 문제는 아닙니다. – hims056

+0

귀하의 질문에 올바르게 작동 : http://sqlfiddle.com/#!2/34126/1 다른 오류를 찾으십시오 – user4035

+0

이 문제는 주어진 정보로 복제 할 수 없습니다. MySQL 또는 일부 프로그래밍 언어를 통해이 쿼리를 직접 실행하고 있습니까? 어떤 MySQL 버전을 사용하고 있습니까? – Manu

답변

1

는 쿼리를 잘 살펴 데모를 보이는 VAL2 다음을 val2

에 대해서도 IF(VAL2 =0, 0,val2) val2 사용이

 Select ID,IF(VAL1 =0, 0,val1) val1,VAL2 FROM TBL1 
    UNION ALL 
    Select ID,IF(VAL1 =0, 0,val1) val1,VAL2 FROM TBL2; 

DEMO HERE

을 시도 http://sqlfiddle.com/#!2/9e0845/2

+0

쿼리가 IF없이 동일한 결과를 생성합니다. http://sqlfiddle.com/#!2/9e0845/2 – user4035

+0

Hello 테이블의 값이 비어 있습니다. –

+0

코드에 문제가있는 경우 데모가 표시된 것처럼 쿼리가 좋습니다. –