考虑到以下模式:
null
employees(emp-id, first-name, last-name, hire-date, dept-id, salary) departments(dept-id, dept-name, manager-id, location-id)
您希望在位置ID 1700中显示其各自部门中所有最新员工的姓氏和雇佣日期。您发出以下查询:
SQL> SELECT last-name, hire-date FROM employees WHERE (dept-id, hire-date) IN ( SELECT dept-id, MAX(hire-date) FROM employees JOIN departments USING(dept-id) WHERE location-id = 1700 GROUP BY dept-id);
结果如何? (A) 它会执行,但不会给出正确的结果。 (B) 它执行并给出正确的结果。 (C) 由于成对比较,它会生成一个错误。 (D) 它生成错误,因为GROUP BY子句不能与子查询中的表联接一起使用 答复: (B) 说明: 给定的查询使用下面的内部查询。
SELECT dept-id, MAX(hire-date) FROM employees JOIN departments USING(dept-id) WHERE location-id = 1700 GROUP BY dept-id
内部查询生成位于位置id 1700的每个部门的最后最大雇用日期。
外部查询只会选择所有内部查询对。因此,查询会产生正确的结果。
SELECT last-name, hire-date FROM employees WHERE (dept-id, hire-date) IN (Inner-Query);
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END