以上一章节[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之后,否则出现的子句的次序将会出现错误或者不准确的查询。