跨多个表查询不同的电子邮件



我得到了两个带有电子邮件地址的表,第三个表与用户表有外键关系,我希望得到一些不同的电子邮件地址。以下是数据的表示:

表1(用户(

| Id       | Email          |
| -------- | -------------- |
| 1        | erik@test.com  |
| 2        | joe@test.com   |
| 3        | jack@mail.com  |

表2-用户表的外键

| Id       | user_id        |
| -------- | -------------- |
| 19       | 1              |
| 45       | 2              |

表3(与其他两个表没有关系(

| Id       | email            |
| -------- | -----------------|
| 12       | erik@test.com   |
| 39       | steph@gmail.com |

如何从表3和表1中获取所有不同的电子邮件地址,其中表2中不存在电子邮件(通过user_id.email获取(

所以在上面的场景中,我想回到:

jack@mail.com
steph@gmail.com

并且排除CCD_ 1和CCD_。

我相信你想做的是表1和表3中的电子邮件之间的union,表1中用户的except电子邮件出现在表2:中

(select "Email" from table1
union select "email" from table3)
except 
(select "Email" from Table1 inner join Table2
on Table1."Id" = Table2."user_id")

Fiddle

最新更新