2016-09-23 2 views
-1

여기에있는 것 : 두 개의 테이블이 있습니다. 하나는 웹 사이트가있는 고객을 포함하고 다른 테이블은 고객의 optionnal 웹 사이트를 포함합니다.SQL 합병 2 결과 하나

TABLEA :

cust_id cust_website 
1   [email protected] 
2   [email protected] 
3   [email protected] 
4   [email protected] 
5   [email protected] 
... 

TableB의

cust_id cust_optionnalWebsite 
3   [email protected] 
4   [email protected] 
... 

내가 좋아하는 것이 테이블 예를 들어

에서 dupplicate 웹 사이트가있는 경우

내가 알고 싶은 tabl에 모든 dupplicate 웹 사이트를 가지고있다. eA, 테이블 B 및 테이블 AB. 나는 또한 UNION을 교체 시도

SELECT cust_website FROM tableA WHERE cust_website IN (SELECT cust_optionnalWebsite FROM tableB UNION SELECT cust_website FROM tableA) GROUP BY cust_website HAVING COUNT(cust_website) > 1 

하지만 UNION 문이 sooo를 많은 시간을 소요하고 분명 누락 뭔가 ... : 음, 모든 dupplicate에 ..

나는 이런 식으로 할 시작 OR 문을 사용하지만 tableA와 tableB에 동일한 웹 사이트가있는 경우 두 개의 결과가 아니라 한 개의 결과 만 가져옵니다.

내가

이 도와주세요

웹 사이트
[email protected]
[email protected]입니다 원하는 출력,

당신에게 감사

편집 :

마지막으로이 작품 :

SELECT website FROM (SELECT cust_optionnalWebsite as website FROM tableB UNION ALL SELECT cust_website as website FROM tableA) GROUP BY website HAVING(website)>1; 
+0

쿼리가 너무 오래 걸릴 경우 인덱스 – Jens

+1

으로 최적화하려고합니다. 원하는 출력을 표시 할 수 있습니까? –

+0

내가 원하는 출력을 추가했습니다. –

답변

1

SQL 병합 한 2 결과 :

쿼리를 실행할 때 속도가 느린지고있는 이유 원인이 많이있다
1.) use UNION ALL 

.

1.) Machine specs. 
2.) Database Structure. 
3.) Indexes. 
4.) Database Software it self. 
+0

당신은 무엇을합니까? – Drew

+0

답장을 보내 주셔서 감사합니다.하지만 UNION ALL은 정말 느립니다. 나는 그걸 가져갈 수 없습니다. –

+0

달리 말하면 나올 때까지 이것은 갈 길이 멀 것 같아요. . –