您的位置:首页 > 数据库 > MySQL

mysql中limit用法

2012-03-31 16:33 253 查看
原文来自:http://hi.baidu.com/sppeivan/blog/item/51e1cfe6d367ce23b93820b7.html

使用查询语句的时候,经常要返回前几条或者中间某几行数据,这个时候怎么办呢?不用担心,mysql已 经为我们提供了这样一个功能。


SELECT * FROM table
LIMIT [offset,] rows | rows
OFFSET offset

LIMIT 子句可以被用于强制 SELECT 语句返回指定的记录数。LIMIT 接受一个或两个数字参数。参数必须是一个整数常量。如果给定两个参数,第一个参数指定第一个返回记录行的偏移量,第二个参数指定返回记录行的最大数目。初 始记录行的偏移量是 0(而不是 1): 为了与 PostgreSQL 兼容,MySQL 也支持句法: LIMIT # OFFSET #。


mysql> SELECT * FROM table LIMIT 5,10; // 检索记录行 6-15




//为了检索从某一个偏移量到记录集的结束所有的记录行,可以指定第二个参数为 -1


mysql> SELECT * FROM table LIMIT 95,-1; // 检索记录行 96-last.




//如果只给定一个参数,它表示返回最大的记录行数目:


mysql> SELECT * FROM table LIMIT 5; //检索前 5 个记录行




//换句话说,LIMIT
n 等价于 LIMIT 0,n。

实例:

mysql> use sppeivan;

Database changed

mysql> select * from employee; // 返回所有结果

+------------+------------+--------+-------------+

| username | password | gender | cellphone |

+------------+------------+--------+-------------+

| ewrew | erewr | MAN | 13618889076 |

| ewrwerw32r | 324324 | MAN | 13618889076 |

| grrrrr | r44343 | WOMAN | 13618889076 |

| pansong | erewrwe | MAN | 13618889076 |

| ret43t43t | 43t43 | MAN | 13618889076 |

| ret44t4 | r4tgr | WOMAN | 13618889076 |

| tttt | 4et | WOMAN | 13618889076 |

| wr34r | retre | MAN | 13618889076 |

| xxx | safe | MAN | 13618889076 |

| hhh | ewrwer | MAN | 13618889076 |

| hg | 6574326543 | MAN | 13618889076 |

| ps | ewrwe | MAN | 13618889076 |

| zhu | werew | MAN | 13618889076 |

+------------+------------+--------+-------------+

13 rows in set (0.01 sec)

mysql> select * from employee limit 3 7;

ERROR 1064 (42000): You have an error in your SQL syntax

corresponds to your MySQL server version for the right s

line 1

mysql> select * from employee limit 3, 7; // 返回4-11行

+-----------+----------+--------+-------------+

| username | password | gender | cellphone |

+-----------+----------+--------+-------------+

| pansong | erewrwe | MAN | 13618889076 |

| ret43t43t | 43t43 | MAN | 13618889076 |

| ret44t4 | r4tgr | WOMAN | 13618889076 |

| tttt | 4et | WOMAN | 13618889076 |

| wr34r | retre | MAN | 13618889076 |

| xxx | safe | MAN | 13618889076 |

| hhh | ewrwer | MAN | 13618889076 |

+-----------+----------+--------+-------------+

7 rows in set (0.00 sec)

mysql> select * from employee limit 3,-1; // 错误语法

ERROR 1064 (42000): You have an error in your SQL syntax

corresponds to your MySQL server version for the right s

t line 1

mysql> select * from employee limit 3,1; // 返回第4行

+----------+----------+--------+-------------+

| username | password | gender | cellphone |

+----------+----------+--------+-------------+

| pansong | erewrwe | MAN | 13618889076|

+----------+----------+--------+-------------+

1 row in set (0.00 sec)

mysql> select * from employee limit 3; // 返回前3行

+------------+----------+--------+-------------+

| username | password | gender | cellphone |

+------------+----------+--------+-------------+

| ewrew | erewr | MAN | 13618889076 |

| ewrwerw32r | 324324 | MAN | 13618889076 |

| grrrrr | r44343 | WOMAN | 13618889076 |

+------------+----------+--------+-------------+

3 rows in set (0.00 sec)

mysql> select * from employee limit 10; // 返回前10行

+------------+----------+--------+-------------+

| username | password | gender | cellphone |

+------------+----------+--------+-------------+

| ewrew | erewr | MAN | 13618889076 |

| ewrwerw32r | 324324 | MAN | 13618889076 |

| grrrrr | r44343 | WOMAN | 13618889076 |

| pansong | erewrwe | MAN | 13618889076 |

| ret43t43t | 43t43 | MAN | 13618889076 |

| ret44t4 | r4tgr | WOMAN | 13618889076 |

| tttt | 4et | WOMAN | 13618889076 |

| wr34r | retre | MAN | 13618889076 |

| xxx | safe | MAN | 13811588469 |

| hhh | ewrwer | MAN | 13618889076 |

+------------+----------+--------+-------------+

10 rows in set (0.00 sec)

mysql> select * from employee limit 9,1; // 返回第10行

+----------+----------+--------+-------------+

| username | password | gender | cellphone |

+----------+----------+--------+-------------+

| hhh | ewrwer | MAN | 13816668468 |

+----------+----------+--------+-------------+

1 row in set (0.00 sec)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: