题解 | #获取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;
看了下结果对比:
没有头绪,不知道是按照什么顺序来的,看了眼正确的答案,应该是
select first_name
from employees
order by right(first_name,2) asc;
去掉字段的引号即可,原理待本地安装好 MySQL 之后再探索。