gpt4 book ai didi

mysql - 在 mysql 中连接 3 个表,其中数据不存在于两个连接中

转载 作者:行者123 更新时间:2023-11-29 00:45:23 26 4
gpt4 key购买 nike

我在连接 3 个表时遇到问题,我需要的数据是两个表之一,但不是两个。

假设我们有包含“id”、“city”、“state”列的表“customers”,以及包含“id”列和我想要的数据的 2 个数据表 data_a 和 data_b。

现在我有一个类似于下面的声明。

SELECT cust.id, cust.city, cust.state, a.info as infoa, b.info as infob
FROM customers cust
INNER JOIN data_a a
ON cust.id = a.id
INNER JOIN data_b b
ON cust.id = b.id
WHERE cust.city = 'mytown';

这需要很长时间才能运行,而且我还没有从查询中得到任何响应,因为我会在它完成之前将其杀死(如果它真的会完成的话)。

如果我删除第二个数据表,语句工作正常,只有当我添加它时才会遇到问题。所有 id 列以及城市列都已编入索引。

或者我最好创建一个临时表并进行 2 次连接,将它们插入临时表并从临时表中读取?

编辑:修正了拼写错误

如果我执行左连接,查询将处于执行状态,大概是无限期的。使用内部联接时,我将得到一个空集。

最佳答案

如果联接将在一个表上,而不是在两个表上,那么您需要 LEFT JOIN:

SELECT cust.id, cust.city, cust.state, a.info as infoa, b.info as infob
FROM customers cust
LEFT JOIN data_a a
ON a.id = cust.id
LEFT JOIN data_b b
ON b.id = cust.id
WHERE cust.city = 'mytown';

确保您具有以下索引:

cust: ('city')
data_a: ('id')
data_b: ('id')

关于mysql - 在 mysql 中连接 3 个表,其中数据不存在于两个连接中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10725692/

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