这句SQL语句为什么错了

题目要求求最晚入职的职员的全部信息,正确答案是 select * from employees where hire_date=(select max(hire_date) from employees )
但我这样写为什么不对:select * from employees where hire_date=(select max(hire_date) from employees group by hire_date )
区别就是最后面加了一个group by 语句,为什么错了,SQL新手求解答。。。
全部评论
group by根据hire_date分组了,子查询查出的每组的最大hire_date
点赞 回复 分享
发布于 2017-10-23 03:14
SELECT * FROM employees ORDER BY hire_date DESC LIMIT 1 不是更好吗 你这还要嵌套子查询
点赞 回复 分享
发布于 2017-10-23 08:31
因为不加group by的时候的max是全部表记录的Max 只有一个,加了group by后 根据日期分组,不同日期的各为一组,然后这个时侯每一组的max都是分组的日期,所以会有很多个?
点赞 回复 分享
发布于 2017-10-23 08:47
我也觉得加group by 没啥问题
点赞 回复 分享
发布于 2017-10-23 08:56
max为聚合函数,聚合函数返回的结果是一个,聚合函数的中的列名,不应出现在group by 之后,这里你可以用order by,是没有问题的
点赞 回复 分享
发布于 2017-10-23 09:26
=换in 就能通过了,但没有意义
点赞 回复 分享
发布于 2017-10-23 12:39
group by会出现多个结果,然后用了=号不能识别多个参数 用了max表示最大的一天数据,不知道你想干嘛,可以看看having或者在子查询外再加一个select
点赞 回复 分享
发布于 2017-10-27 23:30

相关推荐

点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务