您好,欢迎访问一九零五行业门户网

MySQL怎么对数据进行排序

一、 排序的基本使用在查询数据时,如果没有使用排序操作,默认情况下sql会按元组添加的顺序来排列查询结果。
要在sql中进行排序操作,可以使用关键字 order by...。在此关键字后面可以添加关键字 asc (ascend) 表示升序排列 (从小到大) ,desc (descend) 表示降序排列 (从大到小) 。
如果在 order by... 关键字后没有添加 asc 或 desc 来指明升序还是降序排列,sql会默认按照升序 asc 排列。如下代码所示:
select employee_id, last_name, salaryfrom employeesorder by salary;
查询结果:
【例子1】查询员工表 employees 中的员工的 employee_id 、last_name 、salary 和 department_id 信息。并按 salary 从大到小 (降序) 进行排列。
select employee_id, last_name, salaryfrom employeesorder by salary desc;
查询结果:
二、 使用列的别名来排序在sql中,可以使用字段 (列) 的别名来进行排序。因为有时我们需要计算表中没有的字段 (如年薪 annual_salary ) ,或者有些字段名字实在是太长了,使用简短的别名可以提高我们编程的效率。如下例子所示:
【例子】查询员工表 employees 中的员工的 employee_id 、last_name 、月薪 salary 和 年薪 annual_salary 信息。并按 annual_salary 从大到小 (降序) 进行排列。
select employee_id, last_name, salary, salary * (1 + ifnull(commission_pct, 0) * 12) as "annual_salary"from employeesorder by annual_salary desc;
查询结果:
【注意】
格式要求,where 必须声明在 from 后。
列的别名只能在 order by... 中使用,不能在 where 中使用。**如果在 where 中使用列的别名,sql会报错。那为什么mysql中列的别名不能在 where 中使用呢?原因如下:
【原因】
select employee_id, last_name, department_idfrom employeeswhere department_id in(50, 60, 70)order by department_id desc;
在sql中,查询语句的执行顺序不遵循上述代码从第1行到第4行从上往下的顺序。而是首先执行第2行 from... ,先去找要查询的表。
再执行第3行 where... ,去筛选符合条件的元组。
然后执行第1行 select... ,显示你要查询的字段。由于在这一步才会生成列的别名,因此无法在上一步中使用它提供的 where 语句。但是可以提供给下一步的 order by 来使用。
最后才是第4行 order by... ,按某列排序。这个时候可以使用列的别名来进行排序。
查询结果:
三、 二级排序在实际生活中,有时候我们需要在按照一个字段排序后再按照另一个字段排序。在sql中我们可以使用二级排序来实现。使用方法请看下面例子:
【例子1】查询员工表 employees 中的员工的员工id employee_id 、名字 last_name 、月薪 salary 和部门id department_id 。并先按部门id department_id 降序排列,再按 salary 从大到小 (降序) 进行排列。
select employee_id, last_name, salary, department_idfrom employeesorder by department_id desc, salary desc;
查询结果:
依次类推,可以在 order by 后面加逗号,来实现三级、四级…排序。
以上就是mysql怎么对数据进行排序的详细内容。
其它类似信息

推荐信息