如何理解可以实现INNER JOIN 功能,但没有使用JOIN的SQL 语句?

遇见了这么一个SQL问题:

有一个名为team的数据表,只包含 name一列,有('a', 'b', 'c', 'd')四条记录,分别代表四只不同的球队。

要求:用一条SQL语句,来显示由2支球队组成的所有比赛组合。


自己刚刚学习了self_join所以就用了如下操作:

SELECT a.name, b.name
FROM team AS a
INNER JOIN team AS b
WHERE a.name < b.name;

问题是:例题给出的答案是不带JOIN的、《SQL必知必会》里也没提到过这种操作。我理解不了,但是它运行正确。代码如下:

SELECT a.name, b.name
from team a, team b 
where a.name < b.name;

答案:

它们表达相同功能的不同SQL书写形式。带JOIN的是依照ANSI-92,例题答案是ANSI-89

选取规则:使用更新版本的SQL规范。

一般情况下,新SQL兼容老SQL规则,从目的达成的角度看无差别;但是如 Gordon Linoff在问答下讲“ANSI-89(在JOIN功能上)属于古董级表达方法。就像你读莎士比亚之后,搞的说话上都跟他似得,只因为你学到了著作中的语句表达。JOINs是现阶段书写最广泛的标准,JOIN语句多明确、恰当啊,别用FROM


附注:stockoverflow论坛相关问答如下:问答一链接问答二链接

附注:如果你想免费合适地学习SQL,不妨参看一下网站:

1. SQL基础在线练习网站:https://www.sqlteaching.com;

2. Stanford公开课

3.更多令人惊叹的免费公开课 CourseraEdX。(学完后可以申领课程结业证书,支持加到LINKINED等招聘网站)




猜你喜欢

转载自blog.csdn.net/htuhxf/article/details/80239235