12.表的查询5种子句之order by与limit

生活中我们通常要对物品进行排序,这就涉及到了order by与limit了。让我们看看什么是order by与limit

为了大家更好的理解,我将例子中需要的sql文件上传到了百度网盘,供大家食用。
链接:https://pan.baidu.com/s/1dqQS2sQj8QoCKi3UfN1wVA 密码:h7hh
1. order by子句

order by是对输出的数据进行排序。
格式:order by column;
举个栗子

mysql> # order by用法
mysql> # 将products中产品按价格从小到大排序
mysql> select vend_id,prod_name,prod_price from products
    -> order by prod_price;
+---------+----------------+------------+
| vend_id | prod_name      | prod_price |
+---------+----------------+------------+
|    1003 | Carrots        |       2.50 |
|    1003 | TNT (1 stick)  |       2.50 |
|    1002 | Fuses          |       3.42 |
|    1003 | Sling          |       4.49 |
|    1001 | .5 ton anvil   |       5.99 |
|    1002 | Oil can        |       8.99 |
|    1001 | 1 ton anvil    |       9.99 |
|    1003 | Bird seed      |      10.00 |
|    1003 | TNT (5 sticks) |      10.00 |
|    1003 | Detonator      |      13.00 |
|    1001 | 2 ton anvil    |      14.99 |
|    1005 | JetPack 1000   |      35.00 |
|    1003 | Safe           |      50.00 |
|    1005 | JetPack 2000   |      55.00 |
+---------+----------------+------------+
14 rows in set (0.42 sec)

以上栗子看出,order by对原表的商品进行了价格上的排序,并且默认的是从小到大的排序。
如何从大到小的排序?在column后面加上关键字desc
格式:order by column asc/desc;(asc为顺序排序,desc为逆序排序,不声明则默认为asc)
举个栗子

mysql> # order by用法之desc
mysql> # 将products中产品按价格从小到大排序
mysql> select vend_id,prod_name,prod_price from products
    -> order by prod_price desc;
+---------+----------------+------------+
| vend_id | prod_name      | prod_price |
+---------+----------------+------------+
|    1005 | JetPack 2000   |      55.00 |
|    1003 | Safe           |      50.00 |
|    1005 | JetPack 1000   |      35.00 |
|    1001 | 2 ton anvil    |      14.99 |
|    1003 | Detonator      |      13.00 |
|    1003 | Bird seed      |      10.00 |
|    1003 | TNT (5 sticks) |      10.00 |
|    1001 | 1 ton anvil    |       9.99 |
|    1002 | Oil can        |       8.99 |
|    1001 | .5 ton anvil   |       5.99 |
|    1003 | Sling          |       4.49 |
|    1002 | Fuses          |       3.42 |
|    1003 | Carrots        |       2.50 |
|    1003 | TNT (1 stick)  |       2.50 |
+---------+----------------+------------+
14 rows in set (0.00 sec)

以上栗子看出,desc用来逆序排序。当价格相等时,我们想按照name的逆序来排序,如何做?
order by 后面可以接多个列名来依此对其进行排序。
格式:order by column1 asc/desc,column2 asc/desc, …;(先按column1排序,再按column2排序。。。)
举个栗子

ysql> # order by用法之按多个属性排序
mysql> # 将products中产品按价格从大到小排序,
mysql> # 价格一样的按产品名称逆序排序。
mysql> select vend_id,prod_name,prod_price from products
    -> order by prod_price desc,prod_name desc;
+---------+----------------+------------+
| vend_id | prod_name      | prod_price |
+---------+----------------+------------+
|    1005 | JetPack 2000   |      55.00 |
|    1003 | Safe           |      50.00 |
|    1005 | JetPack 1000   |      35.00 |
|    1001 | 2 ton anvil    |      14.99 |
|    1003 | Detonator      |      13.00 |
|    1003 | TNT (5 sticks) |      10.00 |
|    1003 | Bird seed      |      10.00 |
|    1001 | 1 ton anvil    |       9.99 |
|    1002 | Oil can        |       8.99 |
|    1001 | .5 ton anvil   |       5.99 |
|    1003 | Sling          |       4.49 |
|    1002 | Fuses          |       3.42 |
|    1003 | TNT (1 stick)  |       2.50 |
|    1003 | Carrots        |       2.50 |
+---------+----------------+------------+
14 rows in set (0.00 sec)
2. limit子句

limit子句很简单,就是用来限制结果的。对结果取特定的行来返回。
格式:limit [offset,N];
解释:offset为偏移量,N是返回的个数。一般搭配order by使用。也可以不写offset,则默认为0。
举两个栗子

mysql> # limit用法
mysql> # 从products表中取出最贵的5种产品
mysql> select vend_id,prod_name,prod_price from products
    -> order by prod_price desc limit 5;
+---------+--------------+------------+
| vend_id | prod_name    | prod_price |
+---------+--------------+------------+
|    1005 | JetPack 2000 |      55.00 |
|    1003 | Safe         |      50.00 |
|    1005 | JetPack 1000 |      35.00 |
|    1001 | 2 ton anvil  |      14.99 |
|    1003 | Detonator    |      13.00 |
+---------+--------------+------------+
5 rows in set (0.00 sec)

mysql> # 从products表中取出第三到第五便宜的产品
mysql> select vend_id,prod_name,prod_price from products
    -> order by prod_price desc limit 2,3;
+---------+--------------+------------+
| vend_id | prod_name    | prod_price |
+---------+--------------+------------+
|    1005 | JetPack 1000 |      35.00 |
|    1001 | 2 ton anvil  |      14.99 |
|    1003 | Detonator    |      13.00 |
+---------+--------------+------------+
3 rows in set (0.00 sec)
tips
  1. 至此,表查询的五种子句就学习完毕了。分别是where、group by、having、order by、limit。
  2. 五种子句在使用时是有先后顺序的,就是按照我们学习的顺序来的。分别为where、group by、having、order by、limit。如果顺序出现错误,就会出现语法错误。

如果想看其他有关于MySQL数据库的文章,请跳转到到MySQL自学目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值