2013-08-16 10 views
5

To moje zapytanie:zakres Wybór rekordów z MySQL

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

Daje mi wynikają z all rekordów w myTable. Dawny.

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 
    ... 

Co zrobić, jeśli muszę wybrać tylko wiersze między 6 to 10? Wybranie 1 to 5 jest łatwe z LIMIT 5, ale co z wyborem zakresu między wierszami?

+0

'LIMIT' obsługuje także przesunięcie. _W dwóch argumentach pierwszy argument określa przesunięcie pierwszego wiersza do zwrócenia, a drugi określa maksymalną liczbę wierszy do zwrócenia. Przesunięcie początkowego wiersza wynosi 0 (nie 1): _ http://dev.mysql.com/doc/refman/5.0/en/select.html –

Odpowiedz

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

Użyj OFFSET z limitem.

LIMIT decyduje o tym, ile wierszy przyjdzie po wykonaniu kwerendy, a przesunięcie zadecyduje o tym, z którego rekordów będą filtrowane.

Read this tutorial for offset.

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

To pokaże rekordy 6, 7, 8, 9, 10

Wtedy masz wyjścia jak

row_number id 
---------- ------- 
    6   105 
    7   105 
    8   106 
    9   107 
    10   108 
Powiązane problemy