可以说我有两个表的学生,记录的模式是
学生(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;
如果我们忽略了这个错误并检查了上面的查询,那么这两个语句在功能上是等效的,但是隐式连接(第一种形式)已被淘汰了很长时间。因此,建议使用显式联接(第二种形式)。它们的另一个好处是提高了代码的可读性-连接条件与join
s整齐地排列在一起,并且该where
子句可以随意处理查询的逻辑。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句