这句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

相关推荐

10-30 10:16
南京大学 Java
龚至诚:给南大✌️跪了
点赞 评论 收藏
分享
霁华Tel:秋招结束了,好累。我自编了一篇对话,语言别人看不懂,我觉得有某种力量在控制我的身体,我明明觉得有些东西就在眼前,但身边的人却说啥也没有,有神秘人通过电视,手机等在暗暗的给我发信号,我有时候会突然觉得身体的某一部分不属于我了。面对不同的人或场合,我表现出不一样的自己,以至于都不知道自己到底是什么样子的人。我觉得我已经做的很好,不需要其他人的建议和批评,我有些时候难以控制的兴奋,但是呼吸都让人开心。
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务