0

查询是否相同?标准是什么?

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

查询 1

   SELECT a.*, b.id AS b_id
     FROM table_a AS a
LEFT JOIN table_b AS b
       ON a.id = b.id

查询 2

   SELECT a.*, b.id AS b_id
     FROM table_a a, table_b b
    WHERE a.id = b.id
4

1 回答 1

5

他们返回不同的结果。

即使 table_b 中没有与 table_a id 匹配的关联记录,LEFT JOIN 语句也会返回行。因此它将返回 table_a 中的所有行,与 table_a 中的匹配行或空白/空 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

要回答您的性能问题,请在此处查看相关 SO 线程上的答案。

于 2012-11-06T02:36:29.247 回答