对这个语句有些不理解。比如,...where exists (select * from ...)exist 的具体工作过程是什么样的?
主查询和子查询都会返回若干记录,每个记录由若干字段组成。exist如何比较这些字段?

解决方案 »

  1.   

    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)
    得到的結果是一樣的
      

  2.   

    --最好看联机帮助
    where exists (select * from ...)exist 的具体工作过程是什么样的?
    --可以这么理解,对于主查询的每条记录,都会做一个测试,测试子查询有没有返回记录,如果有,那这条主查询记录就被选中,否则就排除主查询和子查询都会返回若干记录,每个记录由若干字段组成。
    --最后结果只有主查询返回记录,子查询不返回记录exist如何比较这些字段?
    --一般来说,实在子查询的where里写明需要比较的字段,以及比较方法
      

  3.   

    exists本身是不會將主查詢和子查詢的結果集進行比較的,它的作用祇是判斷子查詢是否有返回行这句话很关键,谢谢。