database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
ㆍOracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
Oracle Q&A 40374 게시물 읽기
No. 40374
exists를 join으로 바꾸면 안될까요?
작성자
장외인간(bme97)
작성일
2014-02-06 10:19ⓒ
2014-02-06 10:22ⓜ
조회수
7,619

select a,sum(b),sum(c) from ta where d='***' and exists(select * from tb ) tc and ta.a = tb.a group by ta.a 

위에 쿼리를

select a,sum(b),sum(c) from ta, tb where  d='***'  and ta.a = tb.a group by ta.a

아래 쿼리를 바꾸는 차이가 뭘까요?

같게 나오는데...

답변좀 부탁드릴께요~ 도움좀 주세요 ~ !!! exists를 정확히 어떤때 사용해야 유용한지요? ^^

그럼 즐거운 하루 되세요.

이 글에 대한 댓글이 총 4건 있습니다.

올려주신 Exists 쿼리는 오류네요.
 - 오류 : and exists(select * from tb ) tc and ta.a = tb.a
 - 수정 : and exists(select * from tb where ta.a = tb.a)


위 아래 쿼리 결과가 같다면?
ta 와 tb 의 관계가 1:1 또는 m:1 관계네요.
이 경우엔 굳이 exists 를 쓸 필요는 없습니다.
조인으로 하는게 좋구요.
조인을로 안쓰고 Exists 로 사용했다 치더라도
어차피 내부적으로는 조인(세미조인)으로 풀리게 됩니다.


ta 와 tb 의 관계가 1:m 관계라면?
이 경우엔 Exists 를 사용하는게 좋습니다. 조인을 하면 결과도 틀려지구요.
1:m 관계에서 양쪽이 모두 나와야 한다면 조인을 사용하구요.
m 쪽은 확인자 역할만 하고, 1의 집합만 출력되면 되는 경우라면
Exists 를 사용하는것이 맞습니다.

마농(manon94)님이 2014-02-06 13:33에 작성한 댓글입니다.
이 댓글은 2014-02-06 14:01에 마지막으로 수정되었습니다.

아.. 수정해주신게 맞아요. 예제로 옮기다 보니... 관계는 m:1 관계요. 조인으로 변경해도 되겠네요.

1:m인 관계일때 사용하는게 좋겠네요. 혹시 아우터조인을 해도 되지 않을까요? 속도 차이가 있나요? 갑자기 댓글 후에 생각해보니..궁금중이..ㅎㅎㅎ

쉽게 설명해 주셔서 감사합니다. 많은 도움이 됐습니다.

즐거운 오후 되세요.

장외인간님이 2014-02-06 13:41에 작성한 댓글입니다.
이 댓글은 2014-02-06 13:45에 마지막으로 수정되었습니다. Edit

Exists 는 있는것만 나와라~ 하는 구문이구요.

Outer Join 은 없는것도 나와라~ 하는 구문이지요.

서로 결과가 다르지요.

마농(manon94)님이 2014-02-06 14:00에 작성한 댓글입니다.

아... 그렇네요~

감사합니다.

장외인간님이 2014-02-06 14:06에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
40377이전 데이터와 자료 비교 [2]
성석준
2014-02-12
7312
40376기간내 값 검색 후 요일별 정렬에 대하여 여쭤봅니다. [2]
송영환
2014-02-12
6306
40375큰 테이블 백업하기
아폴론
2014-02-07
6781
40374exists를 join으로 바꾸면 안될까요? [4]
장외인간
2014-02-06
7619
40371랜덤 페이징 처리 [3]
궁금이
2014-02-05
7517
40370오라클 프로시져에서 SQL LOADER 를 실행 [1]
임삼호
2014-02-03
7012
40369blob 필드 확인가능한가요?
염정훈
2014-02-03
6326
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.021초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다