2011-03-13 131 views
2

我有一个简单的问题重新编写MySQL。是否有可能返回行'x'和行'y'之间的行?这很难解释 - 为了举例:返回第6行到第10行,不包括第1-5行和第11+行。谢谢! ; dMySQL查询问题

回答

4

使用LIMIT。请记住将其与ORDER BY结合起来,使其具有任何意义。

SELECT fields, ... 
FROM table 
ORDER BY something_sensible 
LIMIT 5, 5 

(开始从6行,取5行)

+1

哦,我的..我不小心排除了..哇。谢谢,哈哈! – Joe 2011-03-13 04:42:03

2

是的,这里有一个例子:

SELECT * FROM myTable LIMIT 5, 5 
+1

我想指出,根据乔的6-10是不正确的例。编辑:直到它被编辑以匹配其他答案。 – 2011-03-13 04:27:46

+1

我认为这个问题在他们正在寻找的例子中非常具体。作为答案,我认为这需要考虑到这一点。 – 2011-03-13 04:30:45

0

从手册(http://dev.mysql.com/doc/refman/5.0/en/select.html):

LIMIT子句可用于限制SELECT语句返回的行数。 LIMIT需要一个或两个数字参数,它们都必须是非负整数常量(除了使用预准备语句时)。

使用两个参数,第一个参数指定要返回的第一行的偏移量,第二个参数指定要返回的最大行数。初始行的偏移量为0(不是1):

SELECT * FROM tbl LIMIT 5,10; #检索行6-15

-1

为什么不使用自动增量字段?或者你可以使用LIMIT关键字,如:

SELECT * FROM tablename WHERE LIMIT 0, 5 

这将显示记录1,2,3,4,5

+0

自动增量与这个特定的问题无关,你的例子不以任何方式回答这个问题,除了5。 – 2011-03-13 04:36:16

0
mysql> select * from employees order by emp_id; 
+--------+-----------------+---------+ 
| emp_id | name   | boss_id | 
+--------+-----------------+---------+ 
|  1 | f00    | NULL | 
|  2 | ali later  |  1 | 
|  3 | megan fox  |  1 | 
|  4 | jessica alba |  3 | 
|  5 | eva longoria |  3 | 
|  6 | keira knightley |  5 | 
|  7 | liv tyler  |  6 | 
|  8 | sophie marceau |  6 | 
+--------+-----------------+---------+ 
8 rows in set (0.00 sec) 

mysql> select * from employees order by emp_id limit 2,4; 
+--------+-----------------+---------+ 
| emp_id | name   | boss_id | 
+--------+-----------------+---------+ 
|  3 | megan fox  |  1 | 
|  4 | jessica alba |  3 | 
|  5 | eva longoria |  3 | 
|  6 | keira knightley |  5 | 
+--------+-----------------+---------+ 
4 rows in set (0.00 sec)