【发布时间】:2017-11-12 16:20:08
【问题描述】:
我是 mysql 的新手。我必须加入两个表
我们称它们为 table_A 和 Table_B
我学会了使用以下代码进行内部连接表
SELECT *
FROM table_A a
INNER JOIN table_B b
ON a.criteria_1 = b.criteria_1
AND a.criteria_2 = b.criteria_2
AND a.criteria_3 = b.criteria_3
今天我遇到了一个使用多个内部连接的查询
SELECT *
FROM table_A a
INNER JOIN table_B b
ON a.criteria_1 = b.criteria_1
INNER JOIN table_B b1
ON a.criteria_2 = b1.criteria_2
INNER JOIN table_B b2
ON a.criteria_3 = b3.criteria_3
这两者有什么区别?
这是我第一次在这里写问题。
【问题讨论】:
-
从读取 SQL 中的定义连接开始。通过一个例子来工作。部分运行代码。例如在 sqlfiddle.com。这是一个“自加入”。阅读相关内容。
-
不同之处在于它会使您的查询难以管理。并且大量的连接会使您的查询的执行时间更长。你可以测试两个查询的执行时间,你会得到差异。
-
@NewazSharif:功能上也存在实际差异。
-
好的。我明白了。结果也会不同。谢谢。 @塞尔吉奥·图伦采夫。
-
@SergioTulentsev PS 不幸的是,如果有一个 SO 答案除了在表运算符和值方面重申代码已经说过的内容之外,我会感到非常惊讶。 (并不是说这个问题很清楚;请参阅我对“差异”的评论。)甚至是教科书。语义上的关系阐述很差——它们会抛出示例查询的示例答案并希望你“明白”。因为我的回答,我给了那个副本。该问题发布在关系代数中,这是一个低流量的标签。 (但问答都涉及 SQL。)我只是用“sql”标记了重复项。)