我已经在谷歌上搜索了一段时间,但没有找到解决方案。好的,我有两个表,如下所示: 表“主”:
表“已注册”:
现在“main”表中的一些客户端将位于“registered”表中,但不是全部。此外,可能有一些客户端位于“已注册”表中,但不在“主”表中。最后,同一个客户端(电子邮件)可能会在主表中多次出现,但在表中只能注册一次。
现在我想做的是一个查询,从两个表和相应的名称中找到所有唯一的电子邮件(我不关心来自哪个表)。 我试过了:
SELECT client_email,client_name
FROM `main`
UNION
SELECT client_email,client_name
FROM `registered`
ORDER BY client_email ASC;
但这会产生重复的电子邮件,因为它不仅查找唯一的电子邮件,而且查找电子邮件和客户名称都唯一的条目。因此,如果一个条目中的客户名称拼写稍有不同(例如,带有连字符或重音符号等),将导致该电子邮件被多次收集。我可以使用 GROUP BY(client_email) 让它在单个表上工作,但我不知道如何从 2 个或更多表中收集所有唯一的电子邮件。
也许包装您的查询和 group_concat 名称
DROP TABLE IF EXISTS main,registered;
create table main(client_email varchar(20), client_name varchar(20));
insert into main values
('[email protected]', 'Peter Pan'),
('[email protected]' , 'Paul Smith'),
('aaa' , 'bbb');
create table registered(client_email varchar(20), client_name varchar(20));
insert into registered values
('[email protected]', 'James Bond'),
('[email protected]' , 'Paul Smith'),
('aaa' , 'ccc');
select client_email,group_concat(client_name)
from
(
SELECT client_email,client_name
FROM `main`
UNION
SELECT client_email,client_name
FROM `registered`
) s
group by client_email;