left join 관련 질문입니다. join을 한번만 할 수 없을까요? 0 3 1,092

by 레인보우자일리톨 [SQL Query] sql left kjoi [2021.01.28 21:21:08]


안녕하세요 선배님들! 

올해 sql을 활용하는 직무를 맡게되어 열심히 공부하고 있습니다 ^^

 

간단한 과제를 하고 있는데 제 머리로 한계가 와서 도움을 구합니다..

 

A      B

key   key  nm            

1      2     500

1      3    1000

2

2

2

3

3

 

아래와 같은 DB가 있는데 

A DB에는 B의 값이 한번만 들어가도록 left join을 하고 싶습니다.

그냥 left join을 하면 매칭되는 모든 열에 join되어서.. 원하는 결과가 나오질 않네요

 

결과는

A     

key   nm  

1     

1     

2      500

2

2

3      1000

3

 

이런 형태로 조인할 수 없을까요?

가능하면 연산이 간단했으면 해요..

돌려야 하는 db가  a가 16억개.. b가 3천만개.. ㅠㅠ

 

지도 편달 부탁드립니다.

감사합니다. 

 

by 레인보우자일리톨 [2021.01.28 21:21:49]

참고로 A의 몇번째 key에 붙는지는 상관이 없습니다.


by 마농 [2021.01.29 08:45:54]

일단 데이터가 적을 경우라면? 분석함수(ROW_NUMBER)를 이용할 수 있습니다.
ROW_NUMBER(OVER PARTITION BY a.key ORDER BY 1) rn 을 구하고
rn = 1 일 때만 조인한다던가 / rn = 1 일 때만 보여준다던가
하는 방식으로 가능은 합니다. 다만, 건수가 너무 대용량이네요.
a 의 키가 중복되는 걸 보면 다른 키 컬럼이 추가로 존재할 듯 합니다.
다른 키 항목이나 기타 항목을 rn 대신 이용 할 수 있는지? 확인이 필요합니다.


by 레인보우자일리톨 [2021.01.29 09:15:34]

의견 감사드립니다. a, b 둘다 컬럼이 여러개가 있지만 unique값이 아니라서 중복 가능성이 있는데 그래도 괜찮을까요? 시간이 걸리더라도 row_number를 활용해봐야겠네요. 

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