我有表EMPLOYEES的名字和开始日期。我必须回到最近雇用的五名员工。我只能返回最近的。
SELECT NAME, FAMILY, STARTING_DATE
FROM EMPLOYEES
WHERE STARTING_DATE = (SELECT MAX(STARTING_DATE)FROM EMPLOYEES);
我已尝试使用ROW_NUMBER,但我认为以防无效。
答案 0 :(得分:0)
使用ORDER BY
:
SELECT e.*
FROM (SELECT NAME, FAMILY, STARTING_DATE
FROM EMPLOYEES
ORDER BY STARTING_DATE DESC
) e
WHERE rownum <= 5;
虽然您可以使用窗口功能来实现此目的,但我没有看到这样做的任何优势。
我应该注意Oracle 12c提供了更简单的ANSI标准语法:
SELECT NAME, FAMILY, STARTING_DATE
FROM EMPLOYEES
ORDER BY STARTING_DATE DESC
FETCH FIRST 5 ROWS ONLY;