gpt4 book ai didi

mysql - MYSQL中如何获取多个相关表中的至少一个表中的数据

转载 作者:行者123 更新时间:2023-11-29 10:16:02 25 4
gpt4 key购买 nike

我需要帮助解决有关 SQL 的问题。

我有三个表,Table1、Table2、Table3,它们都有一个“电子邮件”字段,它们彼此相关。

另一方面,我有一个包含电子邮件列表的数组,我必须检查它们是否位于其中一个表中。这些电子邮件还将它们保存在以逗号分隔的字符串中,并带有各自的引号以在 IN (....) 中使用它:

$emails = ("'email1@example.com', 'email2@example.com', ....");

SELECT *
FROM Table t1
INNER JOIN Table2 t2 ON t1.email = t2.email
INNER JOIN Table3 t3 ON t1.email = t3.email
WHERE (t1.email IN ($ emails)) OR (t2.email IN ($ emails) ) OR (t3.email IN ($ emails));

通过前面的示例,我意识到在执行 INNER JOIN 时,我通过电子邮件字段匹配表,但该字段在所有表中都没有值。有可能电子邮件不在某个表中,而是在另一个表中,因此我需要一个 SQL 查询,以便获取 3 个表中任意一个中的电子邮件。

有人告诉我,我制作了一个电子邮件数组的临时表,然后在表之间进行 LEFT JOIN,我可以得到它,但我不知道该怎么做。

你能给我一个如何解决这个问题的想法吗?

提前致谢。

最佳答案

您需要使用UNION,而不是JOIN

SELECT email, "Table1" AS whichTable
FROM Table1
WHERE email in ($email)
UNION
SELECT email, "Table2" AS whichTable
FROM Table2
WHERE email in ($email)
UNION
SELECT email, "Table3" AS whichTable
FROM Table3
WHERE email in ($email)

在所有查询中使用 SELECT * 假定所有表都具有相同顺序的相似列。如果没有,您需要在每个查询中显式列出列。

关于mysql - MYSQL中如何获取多个相关表中的至少一个表中的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50108638/

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