gpt4 book ai didi

mysql - 如何从 MySQL 表中获取与其他两个表不匹配的结果

转载 作者:行者123 更新时间:2023-11-29 06:36:18 25 4
gpt4 key购买 nike

整晚都在努力解决这个问题。这个问题与 MySQL 数据库有关。

我需要SELECT一个表中没有出现在其他两个表中的所有记录。

例如,取下表:

表1

| email     |  module | name    |
| a@ba.com | 401 | Chris |
| a@ba.com | 402 | Chris |
| a@ba.com | 403 | Chris |
| a@ba.com | 404 | Chris |
| a@ba.com | 405 | Chris |
| z@xy.com | 401 | Anna |
| z@xy.com | 402 | Anna |
| z@xy.com | 403 | Anna |
| z@xy.com | 404 | Anna |
| z@xy.com | 405 | Anna |

表2

| email     | module | requested |
| a@ba.com | 402 | Yes |
| a@ba.com | 403 | No |
| z@xy.com | 403 | Yes |

表3

| email     | module    | received |
| a@ba.com | 405 | Yes |
| z@xy.com | 401 | No |
| z@xy.com | 404 | No |

我需要能够搜索这三个表以找到电子邮件地址匹配的记录。然后我想从 table1 中选择所有行,其中模块对于该表是唯一的,即它没有出现在其他两个表中的任何一个中。例如,对于名为 Chris 的用户,我希望查询返回以下结果,就像两个模块(401404)一样未出现在其他两个表中的任何一个中:

| email     | module  | name   |
| a@ba.com | 401 | Chris |
| a@ba.com | 404 | Chris |

我试过使用不同类型的 JOIN 短语,并且花了大半个晚上试图找到答案,但无济于事。这里有人可以帮忙吗?

最佳答案

LEFT JOIN 应该可以在 MySQL 中获得良好的性能:

SELECT t1.email
, t1.module
, t1.name
FROM table1 t1 LEFT JOIN table2 t2 ON t1.email = t2.email
AND t1.module = t2.module
LEFT JOIN table3 t3 ON t1.email = t3.email
AND t1.module = t3.module
WHERE t2.email IS NULL
AND t3.email IS NULL

关于mysql - 如何从 MySQL 表中获取与其他两个表不匹配的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24520376/

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