2011-09-04 3 views
0

Из простого SQL-запроса в MySQL, как я могу получить только 5 первых результатов?
И как я могу получить следующие 5 результатов?Выбор некоторых результатов SQL-запроса

Например (псевдо-код):

select * from (select * from some_table) where <first 5 results> 
select * from (select * from some_table) where <second 5 results (6-10)> 
+0

Что мешает вам получить первые 10 результатов за один выстрел? – rkg

+0

Различные результаты для разных случаев. – Ash

ответ

3

Вы должны быть в состоянии получить первые 5 результатов с LIMIT 5 в конце Вашего заявления:

SELECT * FROM some_table LIMIT 5; 

И тогда вы можете получить результаты 6-10 с таким запросом:

SELECT * FROM some_table LIMIT 5 OFFSET 5; 

В качестве другого примера, вы можете получить результаты 6-15 с запросом, как это:

SELECT * FROM some_table LIMIT 10 OFFSET 5; 

Пожалуйста, имейте в виду, что, если не добавить в ORDER BY заявление, результаты извлекается в произвольном порядке. Следовательно, на самом деле не имеет смысла использовать LIMIT и OFFSET в отсутствие ORDER BY.

+0

Я думаю, что мой пример, возможно, был слишком простым. Будет ли ваше решение работать, если мой запрос выглядит так: 'SELECT * FROM some_table where some_field> 11'? – Ash

+0

Вы можете определенно добавить предложение WHERE и все еще работать. Реальная проблема заключается в том, что если вы не гарантируете ORDER, на самом деле не имеет смысла говорить, что вы хотите «первые 5 строк» ​​или «строки 6-10». Допустим, у вас есть таблица «name_table», которая имеет один столбец «first_name» со значениями «Алиса», «Боб», «Чарли» и «Дэйв». Если вы сделаете SELECT * FROM name_table LIMIT 1, вы можете получить любое из значений, но если вы сделаете SELECT * FROM name_table ORDER BY first_name LIMIT 1, то вы обязательно получите «Алису» –

+0

ОК, получилось. Благодаря! – Ash

0

Вы можете сделать это, сделав SQL союз

select * from (select * from some_table) where <first 5 results> 
UNION ALL 
select * from (select * from some_table) where <second 5 results (6-10)> 
Смежные вопросы