2016-04-25 2 views
-1

Я хочу выбрать определенное количество строк из MySql с определенной начальной точки с условием. Начальная точка должна быть переменной. Моя проблема в том, что у меня нет строки, с которой следует начинать.MySql выберите конкретное количество строк с началом и условием

In Words: «Начать после первых 5 строк, где« статус »равен 1, и дать мне оттуда следующие 5 строк с« статусом »равным 1».

Пример данные:

----------------------- 
| id | title | status | 
----------------------- 
| 1 | Test | 1 | 
| 2 | Test | 0 | 
| 3 | Test | 1 | 
| 4 | Test | 0 | 
| 5 | Test | 1 | 
| 6 | Test | 1 | 
| 7 | Test | 0 | 
| 8 | Test | 1 | 
| 9 | Test | 1 | 
| 10 | Test | 1 | 
| 11 | Test | 1 | 
| 12 | Test | 1 | 
| 13 | Test | 0 | 
| 14 | Test | 1 | 
| 15 | Test | 0 | 

Первый случай

Я хочу пять строк со статусом равен 1, начались в начале. (Стартовая переменная равна 0).

Ожидаемые данные:

----------------------- 
| id | title | status | 
----------------------- 
| 1 | Test | 1 | 
| 3 | Test | 1 | 
| 5 | Test | 1 | 
| 6 | Test | 1 | 
| 8 | Test | 1 | 

Второй случай

Теперь мне нужно следующие 5 строк, где статус равен 1. (переменная старт 5).

Ожидаемые данные:

----------------------- 
| id | title | status | 
----------------------- 
| 9 | Test | 1 | 
| 10 | Test | 1 | 
| 11 | Test | 1 | 
| 12 | Test | 1 | 
| 14 | Test | 1 | 

Как я могу добиться этого?

+2

Пожалуйста, добавьте пример данных и ожидаемый результат –

+2

вы можете перефразировать это * И я не хочу начинать с 20. строки, мне нужно начать с 20. строка, где статус равен 1 * –

+0

Проблема в том, что я не знаю, в какой строке, где начать. Когда я дал в качестве начала число 20, я хочу начать после 20 строк, где «статус» был равен 1. Вместо этого, если строка 20. – TmCrafz

ответ

1

Используйте предложение LIMIT. Первый параметр - это индекс в полном наборе результатов, из которого вы хотите начать получать результаты. Второй параметр - это количество желаемых результатов. Таким образом, чтобы получить первые 5 результатов:

SELECT * FROM my_table WHERE status = 1 ORDER BY id LIMIT 0,5 

Чтобы получить следующий 5:

SELECT * FROM my_table WHERE status = 1 ORDER BY id LIMIT 5,5 

И так далее. Также см. Здесь: http://dev.mysql.com/doc/refman/5.5/en/select.html

Смежные вопросы