SELECT COUNT(*) studentQty,
         NVL(SUM(CASE WHEN studyStatus = 'Y' AND regStatus = 'Y' THEN 1 ELSE 0 END),0) learningQty,
         NVL(SUM(CASE regStatus WHEN 'Y' THEN 1 ELSE 0 END),0) registedQty,
         NVL(SUM(CASE WHEN passflag = 'Y' AND regStatus = 'Y' THEN 1 ELSE 0 END),0) passQty
      INTO v_studentQty,v_learningQty,v_registedQty,v_passQty
      FROM PUBSTUDENTCURRENT s
      WHERE EXISTS (SELECT sb.branchID
               FROM PUBTEACHINGBRANCH sb
             WHERE sb.treepath LIKE v_treePath || '%'
                AND sb.branchID=s.branchID)
        AND termID = v_termID;??请问这里 WHERE EXISTS (SELECT sb.branchID
               FROM PUBTEACHINGBRANCH sb
             WHERE sb.treepath LIKE v_treePath || '%'
                AND sb.branchID=s.branchID)
        AND termID = v_termID??WHERE EXISTS  是什么意思。。

解决方案 »

  1.   

    EXISTS (SELECT sb.branchID
      FROM PUBTEACHINGBRANCH sb
      WHERE sb.treepath LIKE v_treePath || '%'
      AND sb.branchID=s.branchID)
    的意思是:EXISTS后面的查询语句若能查到值,则返回真,否则返回假。
      

  2.   

    楼主是语法没有完全理解吧WHERE EXISTS (SELECT sb.branchID
      FROM PUBTEACHINGBRANCH sb
      WHERE sb.treepath LIKE v_treePath || '%'
      AND sb.branchID=s.branchID)
      
      ======================
      等效于
    WHERE s.branchID in (SELECT sb.branchID
      FROM PUBTEACHINGBRANCH sb
      WHERE sb.treepath LIKE v_treePath || '%'
      )  
      

  3.   

    select a.* from test_yixl a
    where exists (select * from test_yixl3 b where a.key = b.t2 and rownum < 2);
    意思是:选出表a中,满足a.key = b.t2的记录。
      

  4.   

    WHERE EXISTS (SELECT sb.branchID
      FROM PUBTEACHINGBRANCH sb
      WHERE sb.treepath LIKE v_treePath || '%'
      AND sb.branchID=s.branchID)
    当括号里面的条件成立的时候。