日期:2014-05-17  浏览次数:20802 次

SQL 中相关子查询方面的问题
DELETE FROM job_history JH
WHERE employee_id =
(SELECT employee_id 
 FROM employees E
 WHERE JH.employee_id = E.employee_id
         AND START_DATE = (SELECT MIN(start_date)  
          FROM job_history JH
    WHERE JH.employee_id = E.employee_id
       -- group by employee_id   此处的group by 用与不用为啥效果一样
       )
 AND 3 >  (SELECT COUNT(*)  
          FROM job_history JH
    WHERE JH.employee_id = E.employee_id
  --GROUP BY EMPLOYEE_ID  此处的group by 用与不用为啥效果一样
  HAVING COUNT(*) >= 2));

请问对employees 和 job_history 进行 相关子查询 时 group by条件是怎样被间接使用的

请各位大神解释一下 相关子查询中 出现上述的问题  建两表就可以验证 : 小弟在此谢了
------解决方案--------------------
你已经写了WHERE JH.employee_id = E.employee_id
那么对于job_history 某个特定的employee_id, 在employees中查到的也就只有一个employee_id的记录,用不用group by当然就一样了。