[Mysql]SELECT数据检索排序

以上一章节[Mysql]基本操作命令创建的的data_test表为例:

#进入data_test数据表
show databases;
use data_test;
select * from data_test;#查询出表中的数据
#
+----+--------+
| id | name   |
+----+--------+
|  1 | 王武   |
|  2 | 张三   |
|  3 | 李四   |
+----+--------+
3 rows in set (0.00 sec)
#

单个列排序

通过排序获取从大到小/从小到大的数据

#从大到小
select * from data_test order by id desc;
#
+----+--------+
| id | name   |
+----+--------+
|  3 | 李四   |
|  2 | 张三   |
|  1 | 王武   |
+----+--------+
3 rows in set (0.00 sec)
#
#从小到大
select * from data_test order by id asc;
#
+----+--------+
| id | name   |
+----+--------+
|  1 | 王武   |
|  2 | 张三   |
|  3 | 李四   |
+----+--------+
3 rows in set (0.00 sec)
#

多个列排序

由于初始创建的数据表只有两列数据,所以在data_test数据表中再新增两列数据

#新增一列性别sex字段
alter table data_test add sex varchar(255);
show columns from data_test;
#
+-------+--------------+------+-----+---------+----------------+
| Field | Type         | Null | Key | Default | Extra          |
+-------+--------------+------+-----+---------+----------------+
| id    | int          | NO   | PRI | NULL    | auto_increment |
| name  | varchar(255) | YES  |     | NULL    |                |
| sex   | varchar(255) | YES  |     | NULL    |                |
+-------+--------------+------+-----+---------+----------------+
3 rows in set (0.00 sec)
#
#更新数据
update data_test set sex="女" where id =2;

#Query OK, 1 row affected (0.00 sec)

select * from data_test;
#
+----+--------+------+
| id | name   | sex  |
+----+--------+------+
|  1 | 王武   | 男   |
|  2 | 张三   | 女   |
|  3 | 李四   | 男   |
+----+--------+------+
3 rows in set (0.00 sec)
#

多列基础排序

#多列基础排序
select * from data_test order by id,sex;
#
+----+--------+------+
| id | name   | sex  |
+----+--------+------+
|  1 | 王武   | 男   |
|  2 | 张三   | 女   |
|  3 | 李四   | 男   |
+----+--------+------+
3 rows in set (0.00 sec)
#

指定排序方向-desc

select * from data_test order by id desc;
#
+----+--------+------+
| id | name   | sex  |
+----+--------+------+
|  3 | 李四   | 男   |
|  2 | 张三   | 女   |
|  1 | 王武   | 男   |
+----+--------+------+
3 rows in set (0.00 sec)
#

指定排序方向-asc

select * from data_test order by id asc;
#
+----+--------+------+
| id | name   | sex  |
+----+--------+------+
|  1 | 王武   | 男   |
|  2 | 张三   | 女   |
|  3 | 李四   | 男   |
+----+--------+------+
3 rows in set (0.00 sec)
#

多列混合使用

select * from data_test order by sex desc,id desc;
#
+----+--------+------+
| id | name   | sex  |
+----+--------+------+
|  3 | 李四   | 男   |
|  1 | 王武   | 男   |
|  2 | 张三   | 女   |
+----+--------+------+
3 rows in set (0.00 sec)
#
#注:如果想在多个列上进行降序排序,必须对每个列制定DESC关键字,如上所示

注意事项

在给出order by子句时,应该保证它位于from子句之后,如果使用limit,limit必须位于order by之后,否则出现的子句的次序将会出现错误或者不准确的查询。

你可能感兴趣的:([Mysql]SELECT数据检索排序)