테이블 조인시 중복 컬럼의 경우 0 5 2,791

by YUN [MySQL] [2017.12.12 16:09:08]


두 테이블을 조인하려고 하는데(이유는 권한이 다르기 때문)

기본키 값을 기준으로 조인하는데 모든 내용을 다 불러와야 합니다

left join      union          right join 하면 모든 값은 다 합쳐지는데 키 값도 두 번 나옵니다

아래 표 처럼 모든 값을 가져오면서 중복 값 처리해주고 빈 부분은 널 값으로 대체할 수 있을까요?

num a b + num c d = num a b c d
1 + 1   = 1  
2   + 4   = 2      
3   +       = 3      
      +       = 4      

 

by 탱 [2017.12.12 16:18:10]

FULL OUTER JOIN을 사용하시면 될것같습니다~


by YUN [2017.12.12 16:20:57]

mysql은 full outer join을 지원하지 않더라구요ㅠㅠ


by 우리집아찌 [2017.12.12 16:28:39]

table a 

union all

table b 

group by val , val2 ....


by 마농 [2017.12.12 16:47:16]
SELECT a.num
     , a.a
     , a.b
     , b.c
     , b.d
  FROM t1 a
  LEFT OUTER JOIN t2 b
    ON a.num = b.num
 UNION ALL
SELECT b.num
     , a.a
     , a.b
     , b.c
     , b.d
  FROM t1 a
 RIGHT OUTER JOIN t2 b
    ON a.num = b.num
 WHERE a.num IS NULL
 ORDER BY num
;

 


by 탱 [2017.12.12 17:02:26]

 

select num
     , max(decode(gu,'t1',a)) a
     , max(decode(gu,'t1',b)) b
     , max(decode(gu,'t2',c)) c
     , max(decode(gu,'t2',d)) d
from (
select 't1' gu, num, a, b, null c, null d
from t1
union all
select 't2' gu, num, null a, null b, c, d
from t2
)
group by num
order by num

 

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입