内部联接查询与内部联接..on和where子句查询之间的区别?

杜德

可以说我有两个表的学生,记录的模式是

学生(id,姓名)
记录(rid,sid,subject,marks)

我想打印(名称,主题,标记)。

所以我可以用两种方式编写内部联接

> select a.name,b.subject,b.marks from students a, records b where a.id = b.sid;
or
> select a.name,b.subject,b.marks from students a inner join records b on a.id = b.sid;

显然,它们都返回相同的结果,并花费相同的时间。因此,我不确定它们在内部是否相同,或者是否存在任何一种方案比另一方案更可取的情况?

穆雷尼克

两者都是错的。我认为这是一个错误,第一个where应该是from

> select a.name,b.subject,b.marks from students a, records b where a.id = b.sid;
or
> select a.name,b.subject,b.marks from students a inner join records b on a.id = b.sid;

如果我们忽略了这个错误并检查了上面的查询,那么这两个语句在功能上是等效的,但是隐式连接(第一种形式)已被淘汰了很长时间。因此,建议使用显式联接(第二种形式)。它们的另一个好处是提高了代码的可读性-连接条件与joins整齐地排列在一起,并且该where子句可以随意处理查询的逻辑。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章