在两个不同的表之间使用逗号或连接有什么区别。
例如这两个代码:
SELECT studentId, tutorId FROM student, tutor;
SELECT studentId, tutorId FROM student JOIN tutor;
答案 0 :(得分:5)
在执行它们时没有真正的区别,但在工作中存在可读性,一致性和错误缓解问题:
想象一下,你有4张桌子 如果您使用老式的INNER JOIN方式,最终会得到:
SELECT col1, col2
FROM tab1, tab2, tab3,tab4
WHERE tab1.id=tab2.tab1_id
AND tab4.id = tab2.tab3_id
AND tab4.id = tab3.tab4_id;
使用显式的INNER JOINS,它将是:
SELECT col1, col2
FROM tab1
INNER JOIN tab2 ON tab1.id = tab2.tab1_id
INNER JOIN tab3 ON tab3.id = tab2.tab3_id
INNER JOIN tab4 ON tab4.id = tab3.tab4_id;
后者显示你正好在桌子前面加入了什么。它提高了可读性,并且更不容易出错,因为忘记放置ON子句比在WHERE中添加另一个AND或者完全添加错误的条件更困难(就像我在上面的查询中所做的那样)。
此外,如果您正在使用其他类型的JOINS,使用显式编写方式,您只需将INNER更改为其他内容,并且代码将始终构造。
答案 1 :(得分:2)
根据您提供的具体代码,完全没有区别。
但是,使用JOIN
运算符语法,您可以指定连接条件,这在执行LEFT JOIN
或RIGHT JOIN
时非常重要