使用MySql选择记录范围

时间:2013-08-16 11:53:25

标签: mysql sql

这是我的疑问:

SELECT  @curRow := @curRow + 1 AS row_number,
    myTable.id
FROM    myTable
JOIN    (SELECT @curRow := 0) r

这为我提供all myTable条记录的结果。实施例

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 to 10之间的行,该怎么办?使用1 to 5可以轻松选择LIMIT 5,但如何在两者之间选择行数?

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:4)

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

使用带有限制的 OFFSET

LIMIT决定查询执行后会有多少行,而偏移量决定记录将从哪些记录中过滤。

Read this tutorial for offset