MySQL的Limit子句的使用,以及相关例题

        MySQL特有的子句。它是SELECT语句中的最后一个子句(在order by后面)。它用来表示从结果集中选取最前面或最后面的几行。偏移量offset的最小值为0。

        limit  <获取的行数> [OFFSET <跳过的行数>]或者  limit [<跳过的行数>,] <获取的行数> 

        有两个表如下:

root@TENNIS 17:32  mysql>select * from PENALTIES;
+-----------+----------+--------------+--------+
| PAYMENTNO | PLAYERNO | PAYMENT_DATE | AMOUNT |
+-----------+----------+--------------+--------+
|         1 |        6 | 1980-12-08   | 100.00 |
|         2 |       44 | 1981-05-05   |  75.00 |
|         3 |       27 | 1983-09-10   | 100.00 |
|         4 |      104 | 1984-12-08   |  50.00 |
|         5 |       44 | 1980-12-08   |  25.00 |
|         6 |        8 | 1980-12-08   |  25.00 |
|         7 |       44 | 1982-12-30   |  30.00 |
|         8 |       27 | 1984-11-12   |  75.00 |
+-----------+----------+--------------+--------+
8 rows in set (0.00 sec)
root@TENNIS 17:32  mysql>select * from PLAYERS;
+----------+-----------+----------+------------+-----+--------+----------------+---------+----------+-----------+------------+----------+
| PLAYERNO | NAME      | INITIALS | BIRTH_DATE | SEX | JOINED | STREET         | HOUSENO | POSTCODE | TOWN      | PHONENO    | LEAGUENO |
+----------+-----------+----------+------------+-----+--------+----------------+---------+----------+-----------+------------+----------+
|        2 | Everett   | R        | 1948-09-01 | M   |   1975 | Stoney Road    | 43      | 3575NH   | Stratford | 070-237893 | 2411     |
|        6 | Parmenter | R        | 1964-06-25 | M   |   1977 | Haseltine Lane | 80      | 1234KK   | Stratford | 070-476537 | 8467     |
|        7 | Wise      | GWS      | 1963-05-11 | M   |   1981 | Edgecombe Way  | 39      | 9758VB   | Stratford | 070-347689 | NULL     |
|        8 | Newcastle | B        | 1962-07-08 | F   |   1980 | Station Road   | 4       | 6584WO   | Inglewood | 070-458458 | 2983     |
|       27 | Collins   | DD       | 1964-12-28 | F   |   1983 | Long Drive     | 804     | 8457DK   | Eltham    | 079-234857 | 2513     |
|       28 | Collins   | C        | 1963-06-22 | F   |   1983 | Old Main Road  | 10      | 1294QK   | Midhurst  | 010-659599 | NULL     |
|       39 | Bishop    | D        | 1956-10-29 | M   |   1980 | Eaton Square   | 78      | 9629CD   | Stratford | 070-393435 | NULL     |
|       44 | Baker     | E        | 1963-01-09 | M   |   1980 | Lewis Street   | 23      | 4444LJ   | Inglewood | 070-368753 | 1124     |
|       57 | Brown     | M        | 1971-08-17 | M   |   1985 | Edgecombe Way  | 16      | 4377CB   | Stratford | 070-473458 | 6409     |
|       83 | Hope      | PK       | 1956-11-11 | M   |   1982 | Magdalene Road | 16A     | 1812UP   | Stratford | 070-353548 | 1608     |
|       95 | Miller    | P        | 1963-05-14 | M   |   1972 | High Street    | 33A     | 5746OP   | Douglas   | 070-867564 | NULL     |
|      100 | Parmenter | P        | 1963-02-28 | M   |   1979 | Haseltine Lane | 80      | 6494SG   | Stratford | 070-494593 | 6524     |
|      104 | Moorman   | D        | 1970-05-10 | F   |   1984 | Stout Street   | 65      | 9437AO   | Eltham    | 079-987571 | 7060     |
|      112 | Bailey    | IP       | 1963-10-01 | F   |   1984 | Vixen Road     | 8       | 6392LK   | Plymouth  | 010-548745 | 1319     |
+----------+-----------+----------+------------+-----+--------+----------------+---------+----------+-----------+------------+----------+
14 rows in set (0.00 sec)

例题:

1、得到编号最大的前4个球员的编号和名字 

root@TENNIS 17:35  mysql>SELECT  playerno, name   FROM  PLAYERS   ORDER BY  playerno DESC   LIMIT  4;
+----------+-----------+
| playerno | name      |
+----------+-----------+
|      112 | Bailey    |
|      104 | Moorman   |
|      100 | Parmenter |
|       95 | Miller    |
+----------+-----------+
4 rows in set (0.00 sec)

        SELECT  playerno, name   FROM  PLAYERS   ORDER BY  playerno DESC   LIMIT  4;

         挑选字段,playerno和name,从PLAYERS这个表里面读取,ORDER BY 是一个用来排序的,desc是降序,asc是升序,默认也是升序,limit 4 在筛选出来的里面限制4个,也就是只取前面4个。

2、得到球员编号最低的5个球员的编号和名字,从第4个球员开始

 

root@TENNIS 17:40  mysql>SELECT playerno,  name   FROM PLAYERS   ORDER BY playerno ASC   LIMIT  3, 5;
+----------+-----------+
| playerno | name      |
+----------+-----------+
|        8 | Newcastle |
|       27 | Collins   |
|       28 | Collins   |
|       39 | Bishop    |
|       44 | Baker     |
+----------+-----------+
5 rows in set (0.00 sec)

        SELECT playerno,  name   FROM PLAYERS   ORDER BY playerno ASC   LIMIT  3, 5; 

        其他的跟上面差不多,limit 3,5  的意思是从第四个开始,往后面取5个,limit的偏移量是从0开始的,所以第4个开始是 limit 3,5 。

3、4个最低的罚款额的平均值是多少?

root@TENNIS 17:46  mysql>SELECT avg(amount)   FROM (SELECT amount           FROM PENALTIES       ORDER BY amount          LIMIT 4 ) a;
+-------------+
| avg(amount) |
+-------------+
|   32.500000 |
+-------------+
1 row in set (0.00 sec)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值