一步一步学MySQL----10 排序和限制数据记录查询

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u013003827/article/details/64904620

MySQL中排序数据查询结果通过SQL语句order by关键字来实现。

语法:

select field1 field2 …… fieldn from table_name where condition order by fieldm1 [asc|desc], [fieldm2 [asc|desc],]

说明:
(1) 参数asc表示升序排列,desc表示降序排列;
(2) 关键字order by后面可以设置多个不同的字段进行排序。

  • 按照单字段排序
  • 按照多字段排序

限制数据记录查询时因为当条件查询时,有时所查询到的数据记录太多,如果全部显示出来则不符合实际需求,此时就可以通过限制查询结果的数据记录的数量来控制。

限制数据记录查询的数量通过关键字limit来实现。

语法:

select field1 field2 …… fieldn from table_name where condition limit offset_start, row_count;

根据是否制定初始位置(起始偏移量) ,关于限制数据查询结果数量语句可以分为如下两类:

  • 不指定初始位置方式
  • 指定初始位置方式

10.1 按照单字段排序

(1)升序排序

例如:查询员工薪水,并按升序排列

mysql> select * from employee order by salary asc;

这里写图片描述

(2)降序排序
例如:查询员工薪水,并按降序排列

mysql> select * from employee order by salary desc;

这里写图片描述

10.2 按照多字段排序

例如:查询员工薪水升序排列),入职日期降序排列

mysql> select * from employee order by salary asc, Hiredate desc;

说明:

查询结果都是先按照字段salary的值从小到大进行排序,当遇到值相同的数据记录时,则按照字段Hiredate的值进行从大到小排序。
这里写图片描述

10.3 不指定初始位置

说明:如果不指定初始位置,默认值为0,即表示从第一条记录开始显示。

(1)显示记录数小于查询结果

首先我们在原先的员工数据表中薪水字段后面增加一个字段bonus(奖金),如下:

mysql> alter table employee add bonus int after salary;

Query OK, 8 rows affected (0.18 sec)
Records: 8 Duplicates: 0 Warnings: 0

这里写图片描述

然后,我们查询字段bonus值为null的数据记录,并且只显示两条查询结果:

mysql> select * from employee where bonus is null limit 2;

这里写图片描述

(2)显示记录数大于查询结果

从上面的表中,我们可以看到,符合bonus的值为null的数据记录有8条,如果我们设置关键字row_count参数大于8时,会出现什么效果?

mysql> select * from employee where bonus is null limit 10;

这里写图片描述

从查询结果来看,虽然要求显示的查询结果数量是10,但是查询结果总数才8,所以此时如果要求显示记录数大于查询结果时,只会显示所有查询结果。

10.4 指定初始位置

例如:查询字段bonus为空的员工(从第2条记录开始的6条记录),然后对排序结果根据入职时间(Hiredate)从早到晚排序进行显示。

mysql> select * from employee where bonus is null order by Hiredate limit 1, 6;

这里写图片描述

猜你喜欢

转载自blog.csdn.net/u013003827/article/details/64904620