1 題目描述
查找最晚入職員工的所有信息
CREATE TABLE `employees` (
`emp_no` int(11) NOT NULL,
`birth_date` date NOT NULL,
`first_name` varchar(14) NOT NULL,
`last_name` varchar(16) NOT NULL,
`gender` char(1) NOT NULL,
`hire_date` date NOT NULL,
PRIMARY KEY (`emp_no`));
2 解題思路
1 利用統計函數 MAX() 找出最大的時間值
select * from employees where hire_date = (select max(hire_date) from employees);
2 利用排序後篩選第一條
不過該方法利用了limit 函數,在MySQL下是有這個函數的,但是在Oracle中並無此函數。
select * from employees order by hire_date desc limit 1
select * from employees order by hire_date desc limit 0,1
LIMIT m,n : 表示從第m+1條開始,取n條數據;
LIMIT n : 表示從第0條開始,取n條數據,是limit(0,n)的縮寫。
所以:LIMIT 0,1 表示從第一條數據開始,取1條數據,即最晚入職員工
oracle數據庫不支持mysql中limit功能,但可以通過rownum來限制返回的結果集的行數,rownum並不是用戶添加的字段,而是oracle系統自動添加的,例如:
select * from employees where rownum<=1
但是似乎牛客網是不支持oracle特有的SQL方法的。看了一下,牛客網SQL語句的編譯使用的是SQLite
3 採用top函數
select top 1 * from employees order by hire_date desc
不過牛客不通過這個代碼。