这两个都是子查询。
当使用"="">"等比较运算符号时,要求子查询只能一条或空的记录如果想返回多条记录,就得使用in
EXISTS语句是检测一个存在检测的子查询语句一般配合IF 在一起使用如新建数据库时,先查询是否已存在,如果存在,删除它后再新建:
if exists (select from sysdatabases where name='stuDB')
drop database stuDB
go
create database stuDB
我不知道EXISTS在SELECT中的应用。
呵呵……刚学的这个 买弄一下:
在SQL 嵌套查询中 IN是取数据集需要通过查询得到的,而当数据集中数据唯一时可以将 IN 换成‘=’。例中第一个必须为IN 第二个可以是IN也可以是= 。
例;SELECT 学号,姓名
FROM 学生
WHERE 学号 IN( SELECT 学号
FROM 选课
WHERE 课程号 =(SELECT课程号
FROM课程
WHERE 课程名=‘高等数学’));
selectfromphome_ecms_memberprowhereuseridin(selectuseridfromphome_ecmswherechecked
--存储过程效率更高些这个写的不好。一般都不in查询因为他的效率特别低。而且不需要全部字段的话,尽量就不用select来查询。慢慢努力哦!
没见过这么不严谨的写法……
好吧,你每次执行WHERE id in (SELECT knowledge……)里面的数据的时候,括号里面都要执行一次。
可能就是因为这个原因导致的错误。具体不明。
1
嵌套:
select 姓名 from student where 学号 in (select 学号 from 选课 where 课号 in (select 课号 from 课程 where 课名='数据库原理'))
连接:
select 姓名 from 学生 join 选课 on 学生学号=选课学好 join 课程 on 选课课号=课程课号 where 课名='计算机原理'
2 嵌套
select 学号,年龄,性别,系名 from 学生 where 年龄 >(select max(年龄) from 学生 where 系名=计算机系)
3 连接
select 课名,成绩
from 学生 join 选课 on 学生学号=选课学好
join 课程 on 选课课号=课程课号
where 姓名='张力'
嵌套就是类似IN语句,比如select
from
table1
where
id
in
(select
id
from
table2),连接就是用JOIN把2表根据一个字段进行数据连接,区别就是连接查询效率比嵌套高,而且JOIN可以通过改变JOIN先后顺序,先扫描记录少的表,从而提高速度,如果嵌套会固定先搜索子查询
以上就是关于请问SQL嵌套查询时exists语句与in有什么区别全部的内容,包括:请问SQL嵌套查询时exists语句与in有什么区别、sql中“in” 和“=”问题、sql多表多条件嵌套查询(mysql中多表嵌套查询例子)等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)