2012-04-13 6 views
0

Я попытался выполнить поиск, но не уверен, что верну мне ключевые слова.Выбор строк в определенном диапазоне

Я хочу выбрать строки в порядке desc, которые не являются последними 5 строками, но 5 до этого!

Итак, если бы у меня было 140 строк, мне нужны строки 131-135.

Следующие ets меня 136-140.

SELECT id, title, content, date FROM tbl_news ORDER BY id DESC LIMIT 5 

Как я могу изменить предельное значение для достижения 131-135?

Спасибо.

ответ

3

Вы хотите использовать лимит два параметра:

SELECT id, title, content, date FROM tbl_news ORDER BY id DESC LIMIT 5, 5 

Это даст вам первые 5 строк после того, как 5-й строки (так строк 6, 7, 8, 9, 10), который является 5 строк до последних 5, как вы хотите.

Edit: скрипка здесь: http://sqlfiddle.com/#!2/9113a/1

Он должен вернуться идентификаторы 4-8, поскольку есть 12 записей здесь.

+0

Спасибо, твоя скрипка очень помогла! – sark9012

+0

Рад, что я мог помочь, подумал, что позволит вам возиться с запросом, чтобы понять, как это работает. – jzworkman

-1
SELECT id, title, content, date FROM tbl_news ORDER BY id DESC LIMIT 10,5 
+0

'LIMIT 10,5' ... ??? – Lion

+0

Да, первым параметром является смещение, второе - количество, которое нужно принять. Таким образом, это будет компенсировано на 10, затем возьмите 5 –

+0

За исключением того, что OP хочет смещение на 5, которое вы не объясняете в своем сообщении, что представляют значения. – jzworkman

0

Предел может принимать 2 параметра, смещение (которая равна нулю на основе) и количество, так что вы можете использовать это:

SELECT id, title, content, date FROM tbl_news ORDER BY id DESC LIMIT 10, 5 

Чтобы получить 5 строк, начиная со строки 10

Для вы так, то вы можете сделать

SELECT id, title, content, date FROM tbl_news ORDER BY id ASC LIMIT 129, 5 
+1

Цифры, которые я цитировал, были только для того, чтобы помочь понять вопрос. Строят ли строки, и я всегда хочу, чтобы предыдущие 5 были последними. 5. Будет ли ваш первый запрос делать это? – sark9012

0
SELECT id, title, content, date FROM tbl_news ORDER BY id DESC LIMIT 5,5; 
-1

D Эта работа для вас?

select top 5 id 
from tbl_news 
where id not in 
(
    select top 5 id 
    from tbl_news 
    order by id desc 
) 
order by id desc 
+0

Возможно, вы говорите о других системах баз данных. 'top' не распознается в MySql. – Lion

+0

Собирался сказать то же самое! Никогда раньше не встречались с использованием mysql? – sark9012

+0

Это правда ... Я предположил, что у MySql была верхняя функция –

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