테스트 사이트 - 개발 중인 베타 버전입니다

두개의 쿼리 결과에서 중복되지 않는 값을 찾을려면 어찌해야 하나요> 채택완료

마지막기회 4년 전 조회 2,173

master_table

no     area

1       강남구

2       강서구

3       강동구

4       종로구

5       서대문구

 

data_table

no     area

1      강남구

2      종로구

 

안녕하세요.

위와같은 구조의 두개의 테이블이 있습니다.

master_table의 area 값이 data_table의 area 값과 중복되지 않는 데이터만 뽑으려면 어떻게 해야할까요?

즉 master_table에서 강서구, 강동구, 서대문구 값만 쿼리로 뽑고 싶습니다.

 

 

댓글을 작성하려면 로그인이 필요합니다.

답변 3개

채택된 답변
+20 포인트

select * from master_table left join ( select area as b_area from data_table group by 1) as B ON B.b_area=master_table.area
where b_area is Null

area 에 인덱스 걸려있지 않으면 속도는 느릴껍니다...

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

마지막기회
4년 전
빠른 답변 고맙습니다.
근데 알려주신 쿼리의 경우, data_table의 area값이 master_table의 area 값과 중복되는것이 없을경우 결과가 안나오는데 어떻게 수정해야 할까요?

댓글을 작성하려면 로그인이 필요합니다.

ADPLACE
4년 전

저는 group by 후 having 카운트 이용 할듯한데 ...

 

아무도 이 답변이 없어서 답변 써요.

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

마지막기회
4년 전
다른 방법으로 해결은 했는데, 말씀하신 방법으로도 원하는 결과값을 얻을수 있었습니다.
감사합니다!

댓글을 작성하려면 로그인이 필요합니다.

select * from master_table where area not in (select area from data_table)
이것도 한번 해보세요~ ^^

 

로그인 후 평가할 수 있습니다

답변에 대한 댓글 2개

마지막기회
4년 전
이건 여기 질문올리기전에 제가 작성했던 쿼리인데 원하는값이 안나와서요 ㅠㅠ
실제로는 master_table의 area에 null 값이 포함된 row 도 있는데 혹시 그게 이유일까요?
아톰빤스
4년 전
select
a.area,b.c
from master_table a
left outer join
data_table b
on
a.area = b.c
where b.c  IS null

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인