MySQL比较两个具有不同约束的不同表

时间:2011-11-15 01:03:28

标签: mysql

两个不同表的MySQl比较

我有两个包含这些结构的表:

表1

FullContact
-----------
id
name
phone
address
email
phone
registration
marketingId
created

表2

Contacted
-----------
first_name
last_name
email

FullContact表包含人员,而且“联系人”可能包含相同的个人,但会以奇怪的列结构返回给我。

FullContact可能包含重复项,而且联系人没有重复项。

主要目标:我想看看Contact中有多少人在FullContact中。

我试图运行的查询是这种形式:

SELECT distinct fc.name, fc.email, fc.phone, concat_ws(" ",c.first_name, c.last_name),
c.phone from Contacted c 
INNER JOIN FullContact fc 
ON ( concat_ws(" ", c.first_name,
c.last_name) = fc.name or c.email = fc.email or (fc.phone REGEXP '[0-9]+$') = c.phone)   
and fc.created >= '2011-11-01';

查询说明:  我试图通过使用内部联接和三个字符串参数和日期参数约束来选择FullContact中与联系相同的项目。

问题:  我创建了select语句来显示FullContact中的项目结果和来自联系人的项目。结果包含FullContact列唯一且Contact值重复。

这是正确的查询吗?

由于

1 个答案:

答案 0 :(得分:0)

您正在检查那里的三个重复项,名称,电子邮件或电话。 因此,如果您使用相同的电子邮件有两个不同的名称,则会在结果中获得两个记录。我本来期望并且在on子句中。