SQL合并2导致一个

时间:2016-09-23 07:31:28

标签: mysql merge union concat

这里的事情: 我有两张桌子。一个包含客户与网站,另一个表包含客户的选项网站。

我想知道2表中是否有重复的网站

例如:

tableA:

cust_id   cust_website
1            aaaa@aaa.a
2            bbbb@bbb.b
3            cccc@ccc.c
4            aaaa@aaa.a
5            dddd@ddd.d
...

tableB的

cust_id    cust_optionnalWebsite
3          uuuu@uuu.u
4          dddd@ddd.d
...

我想在tableA,表B和tableAB中拥有所有重复的网站。好吧,都是顽固的..

我开始这样做:

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声明需要太多时间,显然,它缺少一些东西......

我也尝试用OR语句替换UNION,但是如果tableA和tableB中有相同的网站,它不需要两个结果,只有一个。

我想要的输出是

网站
aaaa@aaa.a
dddd@ddd.d

请帮忙,

谢谢

编辑:

最后这个有效:

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;

1 个答案:

答案 0 :(得分:1)

SQL merge 2导致一个:

1.) use UNION ALL

有很多原因导致您在执行查询时变慢。

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