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
结果:右图 展开
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
结果:右图 展开
展开全部
你这两个查询查出的都是笛卡尔积、你没发现同一学号和课号的人成绩有多少个、
就好比、你选了1号课90分、你还选了1号课85分、这显然不符合逻辑。
你的两个查询的结果不一样是因为一个笛卡尔积的where条件成立了、而另一个没成立、所以两个一个结果少另一个多,但是查询的结果都是没有意义的数据。
你要查的是所属班级为20050201的所有学生的信息吧:
做连接查询的两个表、字段可以直接用的、不需要再嵌套了
select s.学号,s.姓名,s.性别,g.课程编号,g.分数
from 学生信息 s,成绩信息 g
where g.学生编号=s.学号 and 所属班级= '20050201'
order by g.分数 desc
就好比、你选了1号课90分、你还选了1号课85分、这显然不符合逻辑。
你的两个查询的结果不一样是因为一个笛卡尔积的where条件成立了、而另一个没成立、所以两个一个结果少另一个多,但是查询的结果都是没有意义的数据。
你要查的是所属班级为20050201的所有学生的信息吧:
做连接查询的两个表、字段可以直接用的、不需要再嵌套了
select s.学号,s.姓名,s.性别,g.课程编号,g.分数
from 学生信息 s,成绩信息 g
where g.学生编号=s.学号 and 所属班级= '20050201'
order by g.分数 desc
展开全部
我觉得因为里面的select出来的结果不一样。第一个where里的select where是 s.学号,而这个s是指的里面的表。而第二个查询中where的s.学号,却是外面的表。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这么多高手,我倒要看看了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询