2011-03-13 163 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)