列出Student_db数据库中选修了“9710011”(即“大学生计算机基础”)课程的学生的成绩比选修“29000011”

列出Student_db数据库中选修了“9710011”(即“大学生计算机基础”)课程的学生的成绩比选修“29000011”(“体育”)课程的学生的最低成绩高的学生的学号和成绩。
在查询分析器中输入并运行以下语句:
SELECT St_Id,Score
FROM S_C_Info
WHERE C_No='9710011'AND
Score>ANY (SELECT Score FROM S_C_Info WHERE C_No='29000011')
为什么是选了计算机基础的学生成绩高于体育的任何一个成绩???

ANY 不是任何的意思吗,
Score>ANY (SELECT Score FROM S_C_Info WHERE C_No='29000011')
当然是大于这数据集SELECT Score FROM S_C_Info WHERE C_No='29000011'
的任何数据了追问

我知道ANY是任何的意思,只是对于这个条件能执行出符合题意的结果不太理解。

追答

因为Score 大于(SELECT Score FROM S_C_Info WHERE C_No='29000011')也就是(“体育”)学生的所有成绩,
------比体育学生的所有成绩大的,当然也会大于其中的最小成绩
例如:4>(0,1,3) 那4肯定大于最小的0了

追问

想明白了,不过没有看你的解析哦,本人反应比较慢,见笑!

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-04-26
带any嵌套查询
select emp.empno,emp.ename,emp.sal from scott.emp where sal>any(select sal from scott.emp where job='manager');
等价于
select sal from scott.emp where job='manager' 结果为 sal:2975 2850 2450
select emp.empno,emp.ename,emp.sal from scott.emp where sal>2975 or sal>2850 or sal>2450

实际上应该取最低成绩
第2个回答  2011-04-26
SELECT St_Id,Score FROM S_C_Info WHERE C_No='9710011'
AND Score > (SELECT min(Score) FROM S_C_Info WHERE C_No='29000011')追问

我写的这个语句是书上的例题。也就是说例题错了?

第3个回答  2011-04-26
很难
相似回答