2013-08-16 4 views
5

Это мой запрос:Выбор диапазона записей с MySql

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

Это дает мне результат с all записей в myTable. Ex.

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, но как насчет выбора диапазона строк между ними?

+0

'LIMIT' также поддерживает смещение. _ С двумя аргументами первый аргумент указывает смещение первой строки для возврата, а второй указывает максимальное количество возвращаемых строк. Смещение начальной строки равно 0 (не 1): _ http://dev.mysql.com/doc/refman/5.0/en/select.html –

ответ

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

Используйте OFFSET с лимитом.

LIMIT решить, сколько строк будет после выполнения запроса и смещения решить, из каких записей будут записываться записи.

Read this tutorial for offset.

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 
Смежные вопросы