注册 登录
编程论坛 Oracle论坛

有关SQL的小问题。

觋_拂晓 发布于 2012-09-26 15:53, 1022 次点击
select *
from Students natural join SC natural join Courses
where GRADE<70 and CREDIT>=3;

这个的查询结果只含有一个元组。。


select SNAME
from Students natural join SC natural join Courses
where GRADE<70 and CREDIT>=3;

而为什么这个会有几个重复的捏。。

求指导。
3 回复
#2
别时茫茫2012-10-22 17:39
我感觉可能是oracle在优化查询的过程中,后一个SQL先是做投影操作,然后才是连接操作。前一个应该没有这个过程,因为选出的是全部的列,具体的可以看下数据库概论之中的查询优化,可能会找到答案。
#3
windows_DV2012-11-06 17:01
假设Students,SC里面都有SNAME这一项,那么第二个语句执行的时候,它会查到Students有一个,输出出来。在SC里面查到也有一个SNAME,并且也符合标准,也会输出的
而第一个语句就不会了。
#4
java小蚂蚁2013-07-04 17:05
在sql语句中加一个关键字distance,就可以消除重复了,其实还是你自己的sql语句写的有问题,在select 之后加上。
而且现在写sql语句有谁还是select* 的,把自己要搜索的一个个列出来最好,* 很好资源的
1