如果我们可以通过
从多个表中收集数据,那么联接的目的是什么?SELECT ,table1.a , table2.b , FROM table1,table2 ...
答案 0 :(得分:4)
您显示的语法实际上是一个连接。它被称为隐式连接。 join
语法称为显式连接,具有相同的效果,但有一些优点:
on
子句中)从逻辑条件。答案 1 :(得分:1)
JOIN允许您将多个表中的所有或选定数据返回到单个临时表中。每个表使用单个SELECT命令将为您留下多个数据集而不是单个源。
答案 2 :(得分:0)
联接对于根据数据库关系从不同表中汇总数据非常有用。
尝试使用此链接了解有关此主题的更多信息http://www.codeproject.com/Articles/435694/Understanding-Table-Joins-using-SQL
答案 3 :(得分:0)
逗号来自显式JOIN语法之前。它是两个表的交叉连接:每个表的行的所有可能组合。 WHERE只保留符合其条件的行。给定逗号和WHERE以及嵌套的SELECTS,不需要替代拼写CROSS JOIN和JOIN在ON中的另一个条件。
然而,OUTER JOINs ON条件导致从逗号加上类似WHERE的restiriction到满足条件的行加上左表(LEFT JOIN),右表(RIGHT JOIN)或两者中的不匹配行的行(FULL JOIN)扩展了另一个表中的列的一行NULL。这需要指定一个匹配条件(确定不匹配的行,其中NULL被添加到逗号将给出的交叉连接),与后来通过WHERE的限制分开。
但只要为OUTER JOIN添加ON条件,就可以允许它进行内部连接。它给出了与外连接ON相同的结果,该条件返回的任何不匹配的行少。这与根据条件进行交叉连接(如WHERE)限制相同。所以(INNER)JOIN是一个逗号,它有自己的条件来自ON,而CROSS JOIN是逗号而没有ON。 (CROSS JOIN就像(INNER)JOIN ON 1 = 1.)(另外逗号的优先级低于显式的非逗号连接。)
TL; DR 逗号为低优先级JOIN;我们不需要明确的INNER JOIN或ON; OUTER JOIN需要与WHERE不同;我们不妨在语法中添加明确的内部JOIN ON。