在两个不同的表之间使用逗号和join有什么区别呢?
例如这两个代码:
SELECT studentId, tutorId FROM student, tutor;
SELECT studentId, tutorId FROM student JOIN tutor;
在两个不同的表之间使用逗号和join有什么区别呢?
例如这两个代码:
SELECT studentId, tutorId FROM student, tutor;
SELECT studentId, tutorId FROM student JOIN tutor;
虽然执行时没有实质性的区别,但可读性、一致性和错误缓解是存在的问题:
想象一下你有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;
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;
后者会在表格前直接显示与其JOIN相关的内容,具有更好的可读性和更少的错误风险,因为更难忘记放置ON子句,而不是在WHERE中加入另一个AND或完全添加错误条件(如上面的查询中所做的一样:)。
此外,如果您正在执行其他类型的JOIN操作,并使用显式的编写方式,您只需要将INNER更改为其他内容,代码就会被一致地构建。