SQL相关子查询是逐行查询么?

分别用“相关子查询”和“非相关子查询”形式,查询“所有课程成绩均大于85分的学生的学号、姓名”信息。写出SQL语句。(假设有表s(sno,sname,sex,age)、s... 分别用“相关子查询”和“非相关子查询”形式,查询“所有课程成绩均大于85分的学生的学号、姓名”信息。写出SQL语句。(假设有表s(sno,sname,sex,age)、sc(sno,cno,grade))

那么相关子查询
select sno,sname
from s
where exist
(select * from sc
where grade>85 and s.sno=sc.sno)
这个是对的么?
如果一个sno 在SC表里有很多个grade而且有大与85和小于85的,是逐行查询的话不就真真假假都返回了么?还是需要在grade前面加个min的聚组函数?
展开
 我来答
q465897859
2011-12-19 · TA获得超过117个赞
知道答主
回答量:118
采纳率:0%
帮助的人:64万
展开全部
1、
select sno,sname,score
from SC a
where exists
(select 1 from sc
where grade>85 and sno=a.sno and sname=a.sname)
2、select sno,sname,score
from SC a
where not exists
(select 1 from sc
where grade<=85 and sno=a.sno and sname=a.sname)
fauxvis
2011-12-18 · TA获得超过263个赞
知道小有建树答主
回答量:368
采纳率:0%
帮助的人:405万
展开全部
不知道你的教程上怎么说的,这样用“相关子查询”和“非相关子查询”看着别扭,
比较常用的如下
SELECT s.sno, s.sname
FROM s
INNER JOIN sc ON sc.sno=s.sno
WHERE sc.grade>85

也可以
SELECT s.sno, s.sname
FROM s, sc
WHERE sc.sno=s.sno AND sc.grade>85
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
安德游子
2011-12-17 · TA获得超过1025个赞
知道答主
回答量:185
采纳率:0%
帮助的人:93.4万
展开全部
不用加,就这样恩
追问
那么就是子查询里不是逐行返回的咯?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式