读书人

关于 exists 语句,该怎么解决

发布时间: 2012-01-23 21:57:28 作者: rapoo

关于 exists 语句
对这个语句有些不理解。

比如,...where exists (select * from ...)

exist 的具体工作过程是什么样的?
主查询和子查询都会返回若干记录,每个记录由若干字段组成。

exist如何比较这些字段?

[解决办法]
exists本身是不主查和子查的果集行比的,它的作用是判子查是否有返回行

但是可以通一定的件主查子查起

比如
select * from A as a
where exists(select 1 from B where id = a.id)

select * from A
where id in(select id from B)
得到的果是一的
[解决办法]
--最好看联机帮助


where exists (select * from ...)

exist 的具体工作过程是什么样的?
--可以这么理解,对于主查询的每条记录,都会做一个测试,测试子查询有没有返回记录,如果有,那这条主查询记录就被选中,否则就排除

主查询和子查询都会返回若干记录,每个记录由若干字段组成。
--最后结果只有主查询返回记录,子查询不返回记录

exist如何比较这些字段?
--一般来说,实在子查询的where里写明需要比较的字段,以及比较方法

读书人网 >SQL Server

热点推荐