SQL的嵌套查询语句!!!两句话为什么查询结果不一样呢???

第一句:selects.学号,s.姓名,s.性别,g.课程编号,g.分数from学生信息s,成绩信息gwhere所属班级in(select所属班级from学生信息swhe... 第一句:
select s.学号,s.姓名,s.性别,g.课程编号,g.分数 from 学生信息 s,成绩信息 g
where 所属班级 in
(select 所属班级 from 学生信息 s where g.学生编号=s.学号 and 所属班级='20050201')
order by g.分数 desc
结果:左图
第二句话:
select s.学号,s.姓名,s.性别,g.课程编号,g.分数 from 学生信息 s,成绩信息 g
where 所属班级 in
(select 所属班级 from 学生信息 where g.学生编号=s.学号 and 所属班级='20050201')
order by g.分数 desc
结果:右图
展开
 我来答
x403879785
2012-04-07 · TA获得超过3839个赞
知道大有可为答主
回答量:1299
采纳率:100%
帮助的人:1174万
展开全部
你这两个查询查出的都是笛卡尔积、你没发现同一学号和课号的人成绩有多少个、
就好比、你选了1号课90分、你还选了1号课85分、这显然不符合逻辑。
你的两个查询的结果不一样是因为一个笛卡尔积的where条件成立了、而另一个没成立、所以两个一个结果少另一个多,但是查询的结果都是没有意义的数据。

你要查的是所属班级为20050201的所有学生的信息吧:
做连接查询的两个表、字段可以直接用的、不需要再嵌套了
select s.学号,s.姓名,s.性别,g.课程编号,g.分数
from 学生信息 s,成绩信息 g
where g.学生编号=s.学号 and 所属班级= '20050201'
order by g.分数 desc
li568298427
2012-04-07 · 超过18用户采纳过TA的回答
知道答主
回答量:65
采纳率:0%
帮助的人:43.1万
展开全部
我觉得因为里面的select出来的结果不一样。第一个where里的select where是 s.学号,而这个s是指的里面的表。而第二个查询中where的s.学号,却是外面的表。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
南方发布
2012-04-07
知道答主
回答量:54
采纳率:0%
帮助的人:24万
展开全部
明显 不一样啊!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wangkaige1
2012-04-07 · 超过19用户采纳过TA的回答
知道答主
回答量:80
采纳率:0%
帮助的人:47.5万
展开全部
这么多高手,我倒要看看了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式