日期:2014-05-19  浏览次数:20540 次

关于 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里写明需要比较的字段,以及比较方法