小编典典

逗号和sql之间的区别

sql

在两个不同的表之间使用逗号或联接有什么区别?

例如以下两个代码:

SELECT studentId, tutorId FROM student, tutor;


SELECT studentId, tutorId FROM student JOIN tutor;

阅读 192

收藏
2021-03-10

共1个答案

小编典典

执行它们时并没有真正的区别,但是在工作中存在可读性,一致性和减轻错误的问题:

想象一下,如果您有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;

后者显示了您在桌子前面的确切位置。它具有更高的可读性,并且更容易出错,因为与在WHERE中添加另一个AND或完全添加错误的条件(就像我在上面的查询中所做的一样)相比,忘记ON子句更容易忘了。

另外,如果您正在执行其他类型的JOINS,则使用显式的编写方式,您只需将INNER更改为其他名称,并且代码将被一致地构造。

2021-03-10