gpt4 book ai didi

mysql - SQL查询NOT IN来自3个有条件的表

转载 作者:搜寻专家 更新时间:2023-10-30 20:14:07 24 4
gpt4 key购买 nike

我有表结构:

旧数据

|电邮 |输入 |

/////////////////////////////

客户

|邮箱1 |

////////////////////////////

垃圾

|邮箱 |


我需要查找不在表 clients 中但仍存在于表 old_data 中且类型为“Accounts”的记录。所以我写了这段代码:

SELECT `email` FROM `old_data`
WHERE `type` = 'Accounts' AND `email` NOT IN (SELECT `email1` FROM `clients`))

然后我需要在此结果记录中找到不在表 trashes 中的记录。所以我写了这段代码:

SELECT * FROM (SELECT `email` FROM `old_data` 
WHERE `type` = 'Accounts' AND `email` NOT IN (SELECT `email1` FROM `clients`)) AS t1
WHERE t1.email NOT IN (SELECT `email` FROM `trashes`)

这里的问题是,我在表 old_data 中有多个记录,用于 1 封电子邮件并输入“帐户”。同样在表 trashes 中,但不在表 clients 中。我需要这样写查询:

old_data 获取所有记录,其中不是 clients 电子邮件,但如果 clients email1 匹配 old_data 电子邮件,从结果中删除包含该电子邮件的所有记录。但是,如果此结果中的电子邮件与表 trashes 中的电子邮件相匹配,则从结果中仅删除包含该电子邮件的一条记录。

请帮忙,我迷路了......

最佳答案

您可以通过链接条件来使用 not in

SELECT od.`email`
FROM `old_data` od
WHERE od.`type` = 'Accounts' AND
od.`email` NOT IN (SELECT `email1` FROM `clients`) AND
od.email NOT IN (SELECT `email` FROM `trashes`);

我更喜欢将 not exists 与子查询一起使用,因为它可以更好地处理 NULL 值。

关于mysql - SQL查询NOT IN来自3个有条件的表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54464328/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com