【发布时间】:2019-07-09 15:56:39
【问题描述】:
表:2018
No Email
1 Lilly@gmail.com
2 brens@gmail.com
3 susan@gmail.com
4 resh@gmail.com
表:2017
No Email
1 chitta@gmail.com
2 resh@gmail.com
3 brens@gmail.com
4 minu@gmail.com
表:2016
No Email
1 brens@gmail.com
2 chitta@gmail.com
3 lisa@gmail.com
4 monay@gmail.com
5 many@gmail.com
表:2019
No Email
1 brens@gmail.com
2 chitta@gmail.com
3 rinu@gmail.com
4 emma@gmail.com
我需要执行表 2018,2017,2016 的联合,没有任何重复的电子邮件减去表 2019,结果应该看起来像
结果
No Email
1 Lilly@gmail.com
2 susan@gmail.com
3 resh@gmail.com
4 minu@gmail.com
5 lisa@gmail.com
6 monay@gmail.com
7 many@gmail.com
Mysql 中没有减号操作。
select a.*from(select *from y2018 union select *from y2017 where not exists(select *from y2018 where y2018.email=y2017.email ) union select *from y2016 where not exists(select *from y2018 where y2018.email=y2016.email ))a LEFT OUTER JOIN y2019 b on a.email=b.email where b.email is null ;
这给出了结果,但不会消除 (2017 union 2016) 中的重复项
有人帮帮我
【问题讨论】:
-
为什么
resh@gmail.com在预期结果中? -
@RaymondNijland (2018 UNION 2017 UNION 2016) resh@gmail.com 在表 2017 中
-
这仍然无法解释,但当我阅读 “我需要执行 2018,2017,2016 表的联合时,没有任何重复的电子邮件减去 2019 表”
-
我希望您也知道预期结果中的“否”列与您的真实数据无关?并且需要生成?