请问SQL嵌套查询时exists语句与in有什么区别

请问SQL嵌套查询时exists语句与in有什么区别,第1张

这两个都是子查询。

当使用"="">"等比较运算符号时,要求子查询只能一条或空的记录如果想返回多条记录,就得使用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中多表嵌套查询例子)等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9848506.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)

保存