使用MySql选择记录范围

5
这是我的查询:
SELECT  @curRow := @curRow + 1 AS row_number,
    myTable.id
FROM    myTable
JOIN    (SELECT @curRow := 0) r

这将给我返回myTable表中的所有(all)记录。例如:

row_number    id
---------- -------
    1         100
    2         101
    3         102
    4         103
    5         104
    6         105
    7         105
    8         106
    9         107
   10         108
   11         109
   12         110
   13         111
   ...

如果我需要选择只有 6 到 10 行的数据该怎么办?使用 LIMIT 5 可以轻松选择前面 1 到 5 行数据,但是如何选择这些行之间的行呢?


LIMIT 还支持偏移量,使用两个参数。第一个参数指定要返回的第一行的偏移量,而第二个参数指定要返回的最大行数。初始行的偏移量为 0(而非 1):http://dev.mysql.com/doc/refman/5.0/en/select.html - Michael Berkowski
2个回答

7
SELECT  @curRow := @curRow + 1 AS row_number, myTable.id
   FROM myTable LIMIT 6, 5; 

这将显示记录6、7、8、9、10。

然后您会得到以下输出:

row_number    id
---------- -------
    6         105
    7         105
    8         106
    9         107
   10         108

4
SELECT  @curRow := @curRow + 1 AS row_number,
    myTable.id
FROM myTable  LIMIT 5 OFFSET 6;

使用OFFSETLIMIT

LIMIT决定查询执行后要取回多少行,而OFFSET则决定从哪条记录开始筛选记录。

阅读此教程以获取关于offset的详细信息


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接