查找最晚入职员工的所有信息题解

查找最晚入职员工的所有信息

http://www.nowcoder.com/questionTerminal/218ae58dfdcd4af195fff264e062138f

查找最晚入职员工的所有信息题解

思路一

  • 知识点
    • ORDER BY 根据指定的列对结果集进行排序,默认按照升序,降序 ORDER BY DESC
    • LIMIT(m, n) 从第 m + 1 行开始取 n 条记录
  • 最晚员工自然是 hire_data,最晚可以用排序 ORDER BY DESC 降序来得到,然后是获取第一条记录,这样理论上是有 bug 的,因为 hire_data 可能有多个相同的记录

代码一

select * from employees order by hire_date desc limit 0,1

思路二

  • 知识点
    • MAX 取最大值
  • 先获取所有最晚的 hire_date,然后把与其相等的记录取出来,这个可以取多条,因此必定是正确的。

代码二

SELECT * FROM employees WHERE hire_date == (SELECT MAX(hire_date) FROM employees)
全部评论
好家伙,两个等号可还行,带沟里了
5 回复 分享
发布于 2021-03-24 22:06
My sql 用 代码一\二都可以 如果是SQL server 可以用代码二(注意没有= = 只有一个等号) 和 top top: select top(1) * from employees order by hire_date desc
1 回复 分享
发布于 2021-09-23 14:41
hire_date后面是=号,不是两个
7 回复 分享
发布于 2020-11-21 20:45
不能用 == 吧
4 回复 分享
发布于 2020-07-31 21:31
SELECT * FROM employees WHERE hire_date = (SELECT MAX(hire_date) FROM employees);
4 回复 分享
发布于 2021-02-07 11:07
这行代码不行吧
点赞 回复 分享
发布于 2020-05-15 15:30
亲测可行
点赞 回复 分享
发布于 2020-05-21 20:20
你第一个 order by,后面怎么没有跟列???
点赞 回复 分享
发布于 2020-08-11 08:45
sql里面好像是没有==这种用法
点赞 回复 分享
发布于 2021-02-12 01:02
用IN也可以
点赞 回复 分享
发布于 2021-03-13 13:59
代码二是一个等于
点赞 回复 分享
发布于 2021-03-27 09:52
limit我也这样写的,为啥提交通不过
点赞 回复 分享
发布于 2021-09-25 18:38
自己说的 hire_data 最晚的可能有多个相同的记录,方法 1: limit 0,1是什么意思?弱水三千只取一瓢? 同理,方法2,hire_date =也是只能等值判断啊,说的和写的完全心口不一
点赞 回复 分享
发布于 2022-02-22 14:07
用 sqllite == 是可以的,诸位去查一查资料好吗?
点赞 回复 分享
发布于 2022-03-15 17:43
https://www.runoob.com/sqlite/sqlite-operators.html 两个等号完全没问题,诸位
点赞 回复 分享
发布于 2022-03-15 17:46
SELECT * FROM employees having hire_date in (SELECT MAX(hire_date) FROM employees)
点赞 回复 分享
发布于 2022-07-15 15:01
mysql没有==
点赞 回复 分享
发布于 2023-08-21 17:25 黑龙江

相关推荐

评论
241
7
分享

创作者周榜

更多
牛客网
牛客企业服务