MySQL学习足迹记录03--ORDER BY,DESC
2013-07-09 00:23
513 查看
排序所用到的表格数据,详见:MySQL学习足迹记录02
1.ORDER BY
为了形成对比,这里先列出不用ORDER BY排序的结果
mysql>
SELECT prod_name FROM products; #受MySQL重回收存储空间的影响,
#每次查询排序的结果可能不同
+----------------+
| prod_name |
+----------------+
| .5 ton anvil |
| 1 ton anvil |
| 2 ton anvil |
| Detonator |
| Bird seed |
| Carrots |
| Fuses |
| JetPack 1000 |
| JetPack 2000 |
| Oil can |
| Safe |
| Sling |
| TNT (1 stick) |
| TNT (5 sticks) |
+----------------+
*用ORDER BY排序
eg:
mysql> SELECT prod_name FROM products ORDER BY prod_price;
+----------------+
| prod_name |
+----------------+
| TNT (1 stick) |
| Carrots |
| Fuses |
| Sling |
| .5 ton anvil |
| Oil can |
| 1 ton anvil |
| TNT (5 sticks) |
| Bird seed |
| Detonator |
| 2 ton anvil |
| JetPack 1000 |
| Safe |
| JetPack 2000 |
+----------------+
*按多个列排序(先排完A,再从结果中排B)
eg:
mysql> SELECT prod_name,prod_id,prod_price FROM products ORDER BY prod_price,prod_name;
#先按prod_price排序,再从排序结果中价格相同的部分再按prod_name排序
+----------------+---------+------------+
| prod_name | prod_id | prod_price |
+----------------+---------+------------+
| Carrots | FC | 2.50 |
| TNT (1 stick) | TNT1 | 2.50 |
| Fuses | FU1 | 3.42 |
| Sling | SLING | 4.49 |
| .5 ton anvil | ANV01 | 5.99 |
| Oil can | OL1 | 8.99 |
| 1 ton anvil | ANV02 | 9.99 |
| Bird seed | FB | 10.00 |
| TNT (5 sticks) | TNT2 | 10.00 |
| Detonator | DTNTR | 13.00 |
| 2 ton anvil | ANV03 | 14.99 |
| JetPack 1000 | JP1000 | 35.00 |
| Safe | SAFE | 50.00 |
| JetPack 2000 | JP2000 | 55.00 |
+----------------+---------+------------+
2.指定排序方向
*默认的排序方向为升序(ASC),为了进行降序,必须用DESC关键字
eg:
mysql> SELECT prod_name,prod_id,prod_price FROM products ORDER BY prod_price DESC;
+----------------+---------+------------+
| prod_name | prod_id | prod_price |
+----------------+---------+------------+
| JetPack 2000 | JP2000 | 55.00 |
| Safe | SAFE | 50.00 |
| JetPack 1000 | JP1000 | 35.00 |
| 2 ton anvil | ANV03 | 14.99 |
| Detonator | DTNTR | 13.00 |
| TNT (5 sticks) | TNT2 | 10.00 |
| Bird seed | FB | 10.00 |
| 1 ton anvil | ANV02 | 9.99 |
| Oil can | OL1 | 8.99 |
| .5 ton anvil | ANV01 | 5.99 |
| Sling | SLING | 4.49 |
| Fuses | FU1 | 3.42 |
| Carrots | FC | 2.50 |
| TNT (1 stick) | TNT1 | 2.50 |
+----------------+---------+------------+
*先降序,再按多个列排序
mysql> SELECT prod_name,prod_id,prod_price FROM products ORDER BY prod_price DESC,prod_name;
+----------------+---------+------------+
| prod_name | prod_id | prod_price |
+----------------+---------+------------+
| JetPack 2000 | JP2000 | 55.00 |
| Safe | SAFE | 50.00 |
| JetPack 1000 | JP1000 | 35.00 |
| 2 ton anvil | ANV03 | 14.99 |
| Detonator | DTNTR | 13.00 |
| Bird seed | FB | 10.00 |
| TNT (5 sticks) | TNT2 | 10.00 |
| 1 ton anvil | ANV02 | 9.99 |
| Oil can | OL1 | 8.99 |
| .5 ton anvil | ANV01 | 5.99 |
| Sling | SLING | 4.49 |
| Fuses | FU1 | 3.42 |
| Carrots | FC | 2.50 |
| TNT (1 stick) | TNT1 | 2.50 |
+----------------+---------+------------+
3.ORDER BY和LIMIT的组合
*SQL语句是由子句组合成的,有些子句是必须的,而有的是可选的。
mysql> SELECT prod_price FROM products ORDER BY prod_price DESC LIMIT 1;
+------------+
| prod_price |
+------------+
| 55.00 |
+------------+
1.ORDER BY
为了形成对比,这里先列出不用ORDER BY排序的结果
mysql>
SELECT prod_name FROM products; #受MySQL重回收存储空间的影响,
#每次查询排序的结果可能不同
+----------------+
| prod_name |
+----------------+
| .5 ton anvil |
| 1 ton anvil |
| 2 ton anvil |
| Detonator |
| Bird seed |
| Carrots |
| Fuses |
| JetPack 1000 |
| JetPack 2000 |
| Oil can |
| Safe |
| Sling |
| TNT (1 stick) |
| TNT (5 sticks) |
+----------------+
*用ORDER BY排序
eg:
mysql> SELECT prod_name FROM products ORDER BY prod_price;
+----------------+
| prod_name |
+----------------+
| TNT (1 stick) |
| Carrots |
| Fuses |
| Sling |
| .5 ton anvil |
| Oil can |
| 1 ton anvil |
| TNT (5 sticks) |
| Bird seed |
| Detonator |
| 2 ton anvil |
| JetPack 1000 |
| Safe |
| JetPack 2000 |
+----------------+
*按多个列排序(先排完A,再从结果中排B)
eg:
mysql> SELECT prod_name,prod_id,prod_price FROM products ORDER BY prod_price,prod_name;
#先按prod_price排序,再从排序结果中价格相同的部分再按prod_name排序
+----------------+---------+------------+
| prod_name | prod_id | prod_price |
+----------------+---------+------------+
| Carrots | FC | 2.50 |
| TNT (1 stick) | TNT1 | 2.50 |
| Fuses | FU1 | 3.42 |
| Sling | SLING | 4.49 |
| .5 ton anvil | ANV01 | 5.99 |
| Oil can | OL1 | 8.99 |
| 1 ton anvil | ANV02 | 9.99 |
| Bird seed | FB | 10.00 |
| TNT (5 sticks) | TNT2 | 10.00 |
| Detonator | DTNTR | 13.00 |
| 2 ton anvil | ANV03 | 14.99 |
| JetPack 1000 | JP1000 | 35.00 |
| Safe | SAFE | 50.00 |
| JetPack 2000 | JP2000 | 55.00 |
+----------------+---------+------------+
2.指定排序方向
*默认的排序方向为升序(ASC),为了进行降序,必须用DESC关键字
eg:
mysql> SELECT prod_name,prod_id,prod_price FROM products ORDER BY prod_price DESC;
+----------------+---------+------------+
| prod_name | prod_id | prod_price |
+----------------+---------+------------+
| JetPack 2000 | JP2000 | 55.00 |
| Safe | SAFE | 50.00 |
| JetPack 1000 | JP1000 | 35.00 |
| 2 ton anvil | ANV03 | 14.99 |
| Detonator | DTNTR | 13.00 |
| TNT (5 sticks) | TNT2 | 10.00 |
| Bird seed | FB | 10.00 |
| 1 ton anvil | ANV02 | 9.99 |
| Oil can | OL1 | 8.99 |
| .5 ton anvil | ANV01 | 5.99 |
| Sling | SLING | 4.49 |
| Fuses | FU1 | 3.42 |
| Carrots | FC | 2.50 |
| TNT (1 stick) | TNT1 | 2.50 |
+----------------+---------+------------+
*先降序,再按多个列排序
mysql> SELECT prod_name,prod_id,prod_price FROM products ORDER BY prod_price DESC,prod_name;
+----------------+---------+------------+
| prod_name | prod_id | prod_price |
+----------------+---------+------------+
| JetPack 2000 | JP2000 | 55.00 |
| Safe | SAFE | 50.00 |
| JetPack 1000 | JP1000 | 35.00 |
| 2 ton anvil | ANV03 | 14.99 |
| Detonator | DTNTR | 13.00 |
| Bird seed | FB | 10.00 |
| TNT (5 sticks) | TNT2 | 10.00 |
| 1 ton anvil | ANV02 | 9.99 |
| Oil can | OL1 | 8.99 |
| .5 ton anvil | ANV01 | 5.99 |
| Sling | SLING | 4.49 |
| Fuses | FU1 | 3.42 |
| Carrots | FC | 2.50 |
| TNT (1 stick) | TNT1 | 2.50 |
+----------------+---------+------------+
3.ORDER BY和LIMIT的组合
*SQL语句是由子句组合成的,有些子句是必须的,而有的是可选的。
mysql> SELECT prod_price FROM products ORDER BY prod_price DESC LIMIT 1;
+------------+
| prod_price |
+------------+
| 55.00 |
+------------+
相关文章推荐
- MySQL学习足迹记录05--数据过滤--AND,OR,NOT,IN
- MySQL学习足迹记录11--分组数据--GROUP BY,HAVING
- MySQL学习足迹记录13--联结表--INNER JOIN...ON
- MySQL学习足迹记录01--SOURCE,SHOW
- MySQL学习足迹记录06--数据过滤--LIKE搭配百分号(%)和下划线(_)通配符
- MySQL学习足迹记录02--SELECT
- MySQL学习足迹记录07--数据过滤--用正则表达式进行检索
- mysql优化学习记录1--索引和order by
- MySQL学习足迹记录04--数据过滤--WHERE
- MySQL学习足迹记录08--创建计算字段--Concat(),AS
- MySQL学习足迹记录10--汇总数据--MAX(),MIN(),AVG(),SUM(),COUNT()
- MySQL学习足迹记录01--SOURCE,SHOW
- MySQL学习足迹记录09--常用文本,日期,数值处理函数
- MySQL学习足迹记录12--使用子查询
- MySQL学习足迹记录14--表别名和自联结
- 【mysql学习】疑问点记录
- SQL函数学习 之 DENSE_RANK() OVER (PARTITION BY col2 ORDER BY col3 DESC) AS seq
- 从头开始学习linux下mysql管理(学习记录)
- mysql 学习记录(六)-- 查看引擎、myisam引擎、自增长、主外键关联、memory引擎、merge引擎
- MySQL学习记录(多表连接查询+演示分析)七 DML