2016-09-23 110 views
-1

这里的东西: 我有两个表。一个包含客户与网站和另一个表包含客户的optionnal网站。SQL合并2结果在一个

我想知道是否有在2台

例如dupplicate网站:

表A:

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] 
... 

我想在桌面拥有所有重复的网站eA,表B和表AB。嗯,dupplicate ..

我开始这样做:

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多的时间,显然,它失去了一些东西......

我也试过更换UNION通过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

直到你告诉我们,否则,这似乎是要走的路。 –