开始在CSDN笔记了,多学点东西总没坏处,就从牛客网的SQL第一题开始吧。
SQL1:查找最晚入职员工的所有信息
SELECT * FROM employees
WHERE hire_date = (
SELECT MAX(hire_date)
FROM employees)
不能使用降序加limit 1,因为最晚入职的员工可能不只一个。
以下代码存在错误的可能性。
SELECT * FROM employees
order by hire_date desc
limit 1
SQL2:查找入职员工时间排名倒数第三的员工所有信息
方案1:最简单的代码逻辑
select * from employees
order by hire_date DESC
limit 2,1 #跳过两个,取第三个
select * from employees
order by hire_data desc
limit 1 offset 2 #取一个,跳过两个 !!!注意ofset没有逗号
方案二:避免多人在同一天(最晚的一天)入职
select * from employees
where hire_date =
(select distinct hire_date from employees
order by hire_data desc
limit 1 offset 2)##distinct 若存在多个,distinct只保留一个