개발 Q&A

제목 Mysql LEFT EXCLUSIVE에 대해서
카테고리 DB
글쓴이 주말생각 작성시각 2021/01/07 11:33:26
댓글 : 4 추천 : 0 스크랩 : 0 조회수 : 9561   RSS

테이블 A, B가 있고 두 테이블은 id라는 컬럼으로 서로 조인됩니다.

LEFT EXCLUSIVE을 하기 위해서

 

select A.id, A.pry, A.day B.id

from A

left outer join B

on A.id = B.id

where B.id is NULL and A.day = '2021'01'07' and B.day = '2021-01-07'

group by B.id

 

위와 같은 쿼리를 만들었는데 빈값이 출력되네요.

현재 A 테이블에는 해당 날짜에 8행의 데이터가 있고

B테이블에는 7행의 데이터가 있으며

이 중에서 공통된(id가 일치하는) 데이터는 4개가 있습니다.

select A.id, A.pry, A.day B.id

from A

join B

on A.id = B.id

where A.day = '2021'01'07' and B.day = '2021-01-07'

group by B.id

으로 하면 4행이 출력되더라고요.

 

LEFT EXCLUSIVE을 하려면 구글링을 하니 첫 번째 쿼리처럼 하면되는 것 같은데 어디가 문제인지 모르겠습니다.

 

 다음글 몽고 디비 삭제 관련입니다. (2)
 이전글 Gmail SMTP 대량 메일 발송 시 에러에 대해 여... (4)

댓글

fhteprhd / 2021/01/07 11:53:32 / 추천 0

무엇을 구하려 하는지 잘 모르겠습니다.

그리고 group by 는 왜 하는거죠??

where , group by 빼고 결과 구해보시고 원하시는 조건을 추가해보세요

변종원(웅파) / 2021/01/07 11:57:49 / 추천 0

on A.id = B.id

where B.id is NULL.   <- 이 구문에 의하면 A.id 도 NULL 인걸 가져오는데 제대로 된게 맞는거죠.

 

left join b 하시면 됩니다. 그 반대는 right join 이구요. 아래 글에 잘 설명되어 있습니다.

https://futurists.tistory.com/17

주말생각 / 2021/01/07 11:59:09 / 추천 0

@fhteprhd

 group by를 하는 이유는 B테이블에 동일한 날에도 같은 동일한 id가 여러 개 이기 때문입니다. id라는 컬럼은 A테이블 동일한 날에 i같은 id는 단일입니다.

where을 빼면 A.day = '2021'01'07' and B.day = '2021-01-07'은 어떻게 구해야 할까요?

 

한대승(불의회상) / 2021/01/07 15:57:05 / 추천 0
@주말생각 group by 대신 distinct를 사용하세요.