mysql⽇期从⼩到⼤排序,简述5种MySQL数据排序
数据排序是按⼀定顺序将数据排列,以便研究者通过浏览数据发现⼀些明显的特征或趋势, 到解决问题的线索。但是在MySQL数据库中,默认情况下,SELECT语句不会对返回的结果进⾏排序,意味着查询结果的显⽰顺序是不确定的。如果想要将结果按照某种规则进⾏排序,例如按照⼊职先后顺序显⽰员⼯的信息,可以使⽤ORDER BY⼦句。MySQL数据排序分为以下5种:单列排序、多列排序、表达式排序,空值排序和中⽂排序,下⾯的内容将依次介绍这5种MySQL排序。
1.单列排序
基于单个字段排序按照单个字段的值进⾏排序称为单列排序。
单列排序的语法如下:
SELECT col1, col2, ...
FROM table_name
[WHERE conditions]
ORDER BY col1 [ASC | DESC];
其中,ORDER BY⽤于指定排序的字段;
ASC表⽰升序排序(Ascending),DESC表⽰降序排序(Descending),默认值为升序排序。例如,以下查询按照员⼯的⼊职先后顺序进⾏排序显⽰:
select emp_name, hire_date
from employee
order by hire_date;
emp_name|hire_date |
---------|----------|
赵 |2000-01-01|
钱 |2000-01-01|
计算机编程常用语言>手机app安装下载孙 |2000-01-01|
李 |2002-08-08|
周 |2002-08-08|
吴 |2005-12-19|
...对于升序排序,数字按照从⼩到⼤的顺序排列,字符按照编码的顺序排列,⽇期时间按照从早到晚的顺序排列;降序排序正好相反。在上⾯的查询结果中,⼊职⽇期为 2000-01-01 的员⼯有 3 位。那么他们谁排在前⾯,谁排在后⾯呢?答案是不确定。如果要解决这个问题,需要使⽤多列排序。
2.多列排序
多列排序是指基于多个字段的值排序,多个字段使⽤逗号进⾏分隔。
多列排序的语法如下:SELECT col1, col2, ...
FROM table_namemysql增删改查语句语法
[WHERE conditions]
ORDER BY col1 [ASC | DESC], col2 [ASC | DESC], ...;
执⾏过程中,先基于第⼀个字段进⾏排序;
对于第⼀个字段排序相同的数据,再基于第⼆个字段进⾏排序;
linux云计算好学吗依此类推。例如,以下语句查询⾏政管理部(dept_id = 1)的员⼯信息;
按照⼊职先后进⾏排序,⼊职⽇期相同再按照⽉薪从⾼到低排序:
select emp_name, sex, hire_date, salary
from employee
where dept_id = 1
order by hire_date asc, salary desc;
emp_name|sex |hire_date |salary |
---------|----|----------|--------|
赵 |男 |2000-01-01|30000.00|
钱 |男 |2000-01-01|26000.00|
孙 |男 |2000-01-01|24000.00|
3. 表达式排序
除了使⽤字段的值进⾏排序之外,也可以基于表达式的结果进⾏排序。例如,以下语句按照年度总收⼊(年薪加奖⾦)进⾏排序:
select emp_name, salary, bonus, salary * 12 + ifnull(bonus, 0) as total_income
from employee
order by total_income;
emp_name|salary |bonus |salary * 12 + ifnull(bonus, 0)|
emp_name|salary |bonus |total_income|
---------|--------|--------|------------|
赵 | 4000.00| | 48000.00|mysql语句顺序
钱 | 4000.00| 1500.00| 49500.00|
孙 | 4200.00| | 50400.00|
李 | 4100.00| 2000.00 | 51200.00|
周 | 4300.00| | 51600.00|
吴 | 4700.00| | 56400.00|
...其中,ifnull(bonus, 0) 函数⽤于将 bonus 为空的数据转换为 0;该函数将会在后续⽂章中进⾏介绍。另外,在指定排序字段时,除了使⽤字段名或者表达式之外,也可以使⽤它们在查询列表中出现的数字编号顺序。
上⾯的⽰例可以改写如下:
select emp_name, salary, bonus, salary * 12 + ifnull(bonus, 0) as total_income
from employee
order by 4;
在查询列表中,total_income 是返回的第 4 个字段;因此该语句也是按照年度总收⼊从低到⾼进⾏排
序。
二维数组指针的定义4.空值排序
空值(NULL)在 SQL 中表⽰未知或者缺失的值。如果排序的字段中存在空值时,结果会怎么样呢?
以下语句按照奖⾦从⾼到低进⾏排序:
select emp_name, bonus
from employee
where dept_id = 3
order by bonus desc;
emp_name|bonus |
----------|-------|
赵 |5000.00|
钱 | |从查询结果可以看到,空值排在了最后。也就是说,MySQL 认为空值最⼩,升序时排在最前,降序时排在最后。如果想要调整空值的排序位置,可以使⽤函数(例如 ifnull)将空值转换为⼀个指定的值。例如,以下语句将奖⾦为空的数据转换为0:
select emp_name, ifnull(bonus, 0) as bonus
from employee
where dept_id = 3
order by ifnull(bonus, 0);
emp_name|bonus |
----------|-------|
赵 | 0.00|
钱 |5000.00|10.5
5.中⽂排序
中⽂排序我们可以为数据库、表或者字段指定⼀个字符集(Charset)和排序规则(Collation)。字符集决定了能够存储哪些字符,⽐如 ASCII 字符集只能存储简单的英⽂、数字和⼀些控制字符;GB2312 字符集可以存储中⽂;Unicode 字符集能够⽀持世界上的各种语⾔。排序规则定义了字符集中字符的排序顺序,包括是否区分⼤⼩写,是否区分重⾳等。对于中⽂⽽⾔,排序⽅式与英⽂有所不同;中⽂通常需要按照拼⾳、偏旁部⾸或者笔画进⾏排序。
以上的5种数据排序基本上囊括了MySQL的数据排序,良好的排序⽅法可以有效提⾼排序速度,提⾼排序效果,提升⽤户的使⽤体验,千万不能⼩觑,在本站的MySQL教程中,对各种MySQL数据排序⽅式都有详细的实例介绍,感兴趣的⼩伙伴千万不要错过学好MySQL数据排序的机会。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论