鉴于以下架构:
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 子句不能与子查询中的表连接一起使用答案:(乙)
说明:给定的查询使用以下内部查询。
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);
这个问题的测验