我这涉及了三个关系(关系即表),用了存在量词exists,翻译成我们理解的语言就是:查询选修了“计算机原理”课程的同学姓名及班级编号
select studentName,classNo
from Student a
where exists
(select * from Score b,Course c
where b.courseNo=c.courseNo --这两个就是b,c关系中的主外键关系,下面studentNo也是
and b.studentNo=a.studentNo and courseName='计算机原理')作者: 274997322 时间: 2013-6-13 20:07
exists是用来判断是否存在的,当exists(查询)中的查询存在结果时则返回真,否则返回假。not exists则相反。
例如:
select * from T_student where exists(select * from T_student inner join T_score on T_student.StuID=T_score.StudentID where score>60)
就是返回分数大于60的学生的信息作者: 江湖一浪人 时间: 2013-6-13 20:14
exists : 强调的是是否返回结果集,不要求知道返回什么, 比如:
select name from student where sex = 'm' and mark exists(select 1 from grade where ...) ,
只要exists引导的子句有结果集返回,那么exists这个条件就算成立了,大家注意返回的字段始终为1,
如果改成“select 2 from grade where ...”,那么返回的字段就是2,这个数字没有意义。所以exists子句不在乎返回什么,而是在乎是不是有结果集返回。
这个关键字在Sql server中可是一个难点,以前学的时候老弄晕!现在明白。作者: 甘斌斌 时间: 2013-6-13 20:53
接口的实现分显示和隐式两种。
显示实现的接口,接口的成员都要声明成公用的(public)
而隐式实现的接口,接口的成员是接口类型加成员名称声明的。这样的声明可以通过强制转换进行和接品的转换。作者: 彭康 时间: 2013-6-13 21:24
江湖一浪人 发表于 2013-6-13 20:14
exists : 强调的是是否返回结果集,不要求知道返回什么, 比如:
select name from student where sex = ' ...
这位说的很好了 exists(select 1 from grade where ...)
这个1是个占位符 这个位置可以是任何数字
我曾经在双主键分页的sql语句用到过 给双主键表一个标示 作者: 胡章诚 时间: 2013-6-13 22:44
select Sname from Student
where EXISTS(select * from SC where Sno='1');
若内层查询结果为非空,则外层where子句返回true,否则返回false,给出的列名Sname没有实际意义