自学MySQL中遇到的字符排序问题
使用DataGrip中,对所需要的列按照要求进行运算后,得到的结果起了别名,别名为中文,对中文别名进行Where筛选后,进行升序或者降序排列,发现排序结果不正确,但是将中文换成英文则不会出现此问题
SELECT employee_id,salary,salary*12 '年工资'
FROM employees
WHERE salary*12 > 60000
ORDER BY '年工资' DESC;
SELECT employee_id,salary,salary*12 year_salary
FROM employees
WHERE salary*12 > 60000
ORDER BY year_salary DESC;
初步认为是字符问题,具体问题原因暂时不明确
因为你乱加引号,年工资不是字段名而是个字符串
你给英文加引号也会是乱序的
不是字符问题。你要用被查询的表中已有的字段进行排序:order by salary*12 desc
如果使用 年工资、year_salary 排序,需要把这个查询放到()里当成子查询:
select * from (SELECT employee_id,salary,salary*12 '年工资'
FROM employees
WHERE salary*12 > 60000) t order by 年工资 desc
这样做,年工资 才是临时表 t 的字段,才能正确排序。