ORDER BY 的顺序是从左到右的一般情况下都可以使用select子句中没有的列来进行排序,但是如果查询中使用了GROUP BY 或者 DISTINCT 则不能按照select列表中没有的列来排序。
1. 按照字串进行排序:
DB2/ MYSQL/ ORACLE : 再ORDER BY 子句中使用SUBSTR函数 -- SELECT ENAME, JOB FROM EMP ORDER BY SUBSTR(JOB, LENGTH(JOB)-2,2)
SQL SERVER: 使用SUBSTRIING -- --- SELECT ENAME, JOB FROM EMP ORDER BY SUBSTRING(JOB, LEN(JOB)-2,2)
2. 按照逻辑来进行排序:
再ORDER BY中使用CASE表达式:
SELECT ename, job FROM EMP ORDER BY CASE WHEN JOB='TEACHER' THEN ENAME ELSE JOB END