제목 | Mysql LEFT EXCLUSIVE에 대해서 | ||
---|---|---|---|
카테고리 | DB | ||
글쓴이 | 주말생각 | 작성시각 | 2021/01/07 11:33:26 |
|
|||
테이블 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
|
변종원(웅파)
/
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 이구요. 아래 글에 잘 설명되어 있습니다. |
주말생각
/
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를 사용하세요.
|
무엇을 구하려 하는지 잘 모르겠습니다.
그리고 group by 는 왜 하는거죠??
where , group by 빼고 결과 구해보시고 원하시는 조건을 추가해보세요