"从左边加入b"与"从a,b"的区别

Gab*_*tos 0 mysql sql

查询是否也这样做?标准是什么?

如果我改变其中一种写查询方式,我会失去性能吗?

查询1

   SELECT a.*, b.id AS b_id
     FROM table_a AS a
LEFT JOIN table_b AS b
       ON a.id = b.id
Run Code Online (Sandbox Code Playgroud)

查询2

   SELECT a.*, b.id AS b_id
     FROM table_a a, table_b b
    WHERE a.id = b.id
Run Code Online (Sandbox Code Playgroud)

Jen*_*ing 5

他们返回不同的结果.

即使table_b中没有与table_a id匹配的关联记录,LEFT JOIN语句也将返回行.因此它将返回table_a中的所有行,与table_a中的匹配行或空白/ null table_b行配对(如果table_a中的那一行,table_b中没有任何匹配的行).

第二个查询是INNER JOIN的快捷方式.此查询将仅返回与条件匹配的行a.id = b.id.第二个查询也可以写成:

SELECT a.*, b.id AS b_id
FROM table_a a
INNER JOIN table_b b 
ON a.id = b.id
Run Code Online (Sandbox Code Playgroud)

要回答您的性能问题,请在此处查看相关SO主题的答案.