查询是否也这样做?标准是什么?
如果我改变其中一种写查询方式,我会失去性能吗?
查询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
答案 0 :(得分: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
要回答您的效果问题,请参阅相关SO主题here上的答案。