我在加入 3 个表时遇到问题,其中我需要的数据是两个表之一,但不是两个表。
因此,假设我们有表“客户”,列“id”,“城市”,“州”,以及 2 个数据表 data_a 和 data_b,列“id”和我想要的数据。
现在我有一个类似于下面的声明。
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 列以及 city 列都被索引。
还是我最好创建一个临时表并执行 2 个连接,将它们插入临时表并从临时表中读取?
编辑:修正错字
如果我确实离开了连接,则查询将处于执行状态,大概是无限期的。使用内连接时,我会得到一个空集。