gpt4 book ai didi

MySQL 在公共(public)列上连接多个表,没有重要性顺序

转载 作者:行者123 更新时间:2023-11-29 04:43:55 24 4
gpt4 key购买 nike

我有一个包含许多表的大型数据库。其中一些表可能包含 email 字段。它们都是同一类型的 varchar(255)。我想要做的是将所有带有电子邮件列的表连接在一起,并获得数据库中所有唯一电子邮件的列表。

我遇到的问题是会有多个表包含该列,因此我需要它具有高性能。第二个问题是,afaik,将表连接在一起意味着它们必须具有从第一个表到连接表的公共(public)值。

我希望能够做这样的事情:

SELECT
email
FROM
table_1
LEFT JOIN
table_2
USING (email)
LEFT JOIN
table_3
USING (email)

但是,我希望能够从所有表中获取所有电子邮件,而不管它们是否存在于另一个表中。

对临时表中的所有表进行联合选择并从中选择 distinct 会更快吗?

我需要能够对很多表(10+)执行此操作,这些表可能有数千到数百万行。如果需要,我会将电子邮件列设置为索引。

谢谢

最佳答案

如果您想要来自所有表的唯一电子邮件,包括只出现在一个表中的电子邮件,您应该使用 UNION 而不是 JOIN

SELECT DISTINCT email FROM table_a
UNION SELECT DISTINCT email FROM table_b
UNION SELECT DISTINCT email FROM table_c
...

关于MySQL 在公共(public)列上连接多个表,没有重要性顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22780367/

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