给定以下架构:
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);
这个问题的测验