ORDER BY ordinal position
2012-05-08 17:34
316 查看
For this query:
My question is: what does the last line "order by 4,2,3" mean?
Those numbers refer to the ordinal position of the columns within the result set that determine the sequence of the result set. The ORDER BY sequence is:
the 4th column, i.e. manager_id
the 2nd column, i.e. hire_date
the 3rd column, i.e. salary
Each of these will be in ascending sequence, since that is the default.
Admittedly, it's easier to type order by 4,2,3 than it is to type order by manager_id, hire_date, salary. However, since this is the age of cut 'n' paste, it
shouldn't be too hard to construct the ORDER BY clause by pasting column names from the SELECT clause.
The reason you want to spell out, by name, which columns to sort by, is to make the query more understandable to someone not familiar with what the query is doing. Remember, this someone will
be you, six months down the road, after you have forgotten why it was 4,2,3 and not 2,4,3. If the query uses ordinal position numbers, you are forced to read the SELECT clause and count columns, which can be daunting if they include expressions as well as
simple column names.
select first_name, hire_date, salary, manager_id mid from employees where department_id in(110,100) order by 4,2,3
My question is: what does the last line "order by 4,2,3" mean?
Those numbers refer to the ordinal position of the columns within the result set that determine the sequence of the result set. The ORDER BY sequence is:
the 4th column, i.e. manager_id
the 2nd column, i.e. hire_date
the 3rd column, i.e. salary
Each of these will be in ascending sequence, since that is the default.
Admittedly, it's easier to type order by 4,2,3 than it is to type order by manager_id, hire_date, salary. However, since this is the age of cut 'n' paste, it
shouldn't be too hard to construct the ORDER BY clause by pasting column names from the SELECT clause.
The reason you want to spell out, by name, which columns to sort by, is to make the query more understandable to someone not familiar with what the query is doing. Remember, this someone will
be you, six months down the road, after you have forgotten why it was 4,2,3 and not 2,4,3. If the query uses ordinal position numbers, you are forced to read the SELECT clause and count columns, which can be daunting if they include expressions as well as
simple column names.
相关文章推荐
- Hive中的 group by position与order by position
- mysql 使用order by field() 自定义排序
- order by field 和 order by INSTR 自定义排序
- select in order by
- Oracle之row_number() / rank() / dense_rank() / over(partition order by)序列函数
- 查询语句中select from where group by having order by的执行顺序
- PHP MySQL Order By 关键词 之 Order By
- oracle order by 不指定 asc或者desc,默认是升序,即asc
- mysql order by的一些技巧
- mysql的ORDER BY RAND()优化
- row_number() over(partition by a order by b desc) rn 用法 收藏下
- MySQL Order By Rand()效率
- mysql order by 条件的值如果相同引发的bug
- Mysql Order By 字符串排序,mysql 字符串order by
- oracle order by 处理NULL 值
- SORT ORDER BY STOPKEY
- UnicodeEncodeError: ‘ascii’ codec can’t encode characters in position xxx ordinal...
- mysql order by 优化 |order by 索引的应用
- MYSQL - ORDER BY & LIMIT
- 关于mysql 的order by rand()