题解 | #获取employees中的first_name#

获取employees中的first_name

http://www.nowcoder.com/practice/74d90728827e44e2864cce8b26882105

思路: 刚开始想的是,先把first_name 截取后两个字母,排序,然后和原表通过主键关联起来,写出了这样的bug:

select first_name from
(SELECT emp_no,SUBSTRING(first_name,first_name.LENGTH-3,first_name.LENGTH-1)
from employees
order by  first_name desc)tab
where employees=emp_no=tab.emp_no;

报错: Execution Error SQL_ERROR_INFO: "Unknown column 'first_name.LENGTH' in 'field list'"

显然,.LENGTH 并不适用(可能是版本问题)。翻了下文档(别人的题解),发现 mysql 有提供 right 函数,返回字符串最右边的n个字符,那直接用 api 就行了呀,没必要关联了,直接查目标字段:

select first_name
from employees
order by  right("first_name",2) asc;

看了下结果对比: alt

没有头绪,不知道是按照什么顺序来的,看了眼正确的答案,应该是

select first_name
from employees
order by  right(first_name,2) asc;

去掉字段的引号即可,原理待本地安装好 MySQL 之后再探索。

全部评论

相关推荐

有担当的灰太狼又在摸鱼:零帧起手查看图片
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务