2 oiu1010110 oiu1010110 于 2016.05.07 11:21 提问

SQL exist与=,in的问题 谢谢指导

//是不是子查询是=就不可以用exists呢?但是=也可以换成In啊,用in的地方不是就可以换成exists吗?但是这里结果不对
student(sno,sname,sdept);course(cno,cname,ccredit);sc(sno,cno,grade)

1、找出学分为4分以上的课程的选修情况,列出学号,课程名,成绩
    select sno,cname,grade from sc,course 
                            where sc.cno = course.cno and
                            sc.cno in(select cno from course where ccredit >4)

select sno,cname,grade from sc,course 
                        where  sc.cno = course.cno and
                        exists(select *from course where sc.cno = cno and ccredit >4)
    //这里in换成exists是对的

2、查询和数据结构相同学分的课程
select cno,cname,ccredit from course 
                    where ccredit=(select ccredit from course where cname = '数据结构')
                    and cname <> '数据结构';  //这里返回了与数据结构相同学分的另外的课

--有问题                     
select cno,cname,ccredit from course x
                    where exists(select * from course where cname = '数据结构' and x.cno = cno);  //但是这里只返回了数据结果,没有其余的课

1个回答

CSDNXIAON
CSDNXIAON   2016.05.07 11:32

sql in 和 exist的区别
SQL中IN与EXIST的区别
sql中的in 和 exist 区别
----------------------同志你好,我是CSDN问答机器人小N,奉组织之命为你提供参考答案,编程尚未成功,同志仍需努力!

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
数据库除法的讲解和 sql 语句 not exist 实现
问题描述 前天看到群里有人问了一个关于数据库查询的问题,问题大概如下: 基本表是s(学生表),c(课程表),sc(学生选课表),怎么查询选修了所有2学分课程的学生姓名。 问题解决 代数解决 此类问题应该用除法解决,用sc表取除以所有2学分的课程表,得到选修了所有2学分的学生学号,然后根据学生学号查询学生姓名。 表达式为:∏name(sc ÷ϭcredit=2(c)⋈S) 该表达式有选
Sql中EXISTS与IN的效率问题
根据两张表大小不同选择EXSIST、IN
SQL server实验指导第7章答案(马晓梅第三版)
SQL server实验指导第7章答案(马晓梅第三版)
SQL中EXISTS与IN的效率问题
一起学习一下; 有两个简单例子,以说明 “exists”和“in”的效率问题 1) select * from T1 where exists(select 1 from T2 where T1.a=T2.a) ;     T1数据量小而T2数据量非常大时,T1 2) select * from T1 where T1.a in (select T2.a from T2) ;  
SQL优化指导(STA)与SQL访问指导(SAA)
SQL优化指导(STA)   可以使用SQL优化指导分析SQL语句,并获得性能建议。 SQL优化指导的分析来源:          顶级活动:分析当前活动的顶级SQL语句。          SQL优化集:分析用户提供的一组SQL语句。          以往的SQL:分析AWR快照收集的SQL语句中的语句。 --实验 运行一个超大的sql EODA@PROD1> desc
SQL Server实验指导 课后答案
sql server实验指导 第三版 清华大学出版社,马晓梅 课后实验答案
sql exists,in,group by,having
语法: EXISTS subquery 参数: subquery 是一个受限的 SELECT 语句 (不允许有 COMPUTE 子句和 INTO 关键字)。 结果类型: Boolean 。如果子查询包含行,则返回 TRUE ,否则返回 FLASE 。(not exists同理,也是返回bool类型,只是结果相反) 一种通俗的可以理解为:将外查询表的每一行,代入内查询作为检验,如果内查询返回的
非常完整的SQL Server 2005 实验指导手册
非常完整的SQL Server 2005 实验指导手册,适合于有志于学习SQL Server的学生或工程师。 实验一 SQL Server 2005 的安装和环境介绍 3 实验二 使用向导创建和删除数据库 13 实验三 使用SQL语句创建和删除数据库 16 实验四 分别用向导和SQL语句创建和删除表 17 实验五 修改数据库基本表的定义 21 实验六 创建和删除索引 22 实验七 简单SELECT语句 23 实验八 子查询 24 实验九 使用子句的SELECT语句 27 实验十 创建视图 30 实验十一 使用视图 31 实验十二 更新语句 32 实验十三 流控制语句 33 实验十四 使用游标 34 实验十五 数据库约束实验 35 实验十六 数据库设计 37
not exists 解决group by排序问题
select select task.PROCINST_ piID from jbpm_taskinstance task,jbpm_processinstance pi where pi.END_ !='' and pi.ID_=task.PROCINST_ and  not exists (SELECT 1 from jbpm_taskinstance where end_<task.E
SQL 用exists代替全称量词
学习sql的必经问题。 学生表student (id学号     Sname姓名       Sdept所在系)   课程表Course           (crscode课程号       name课程名)   学生选课表transcript           (studid学号     crscode课程号       Grade成绩)