2013-09-30 3 views
7

Есть ли все равно, чтобы получить последние 3 комментария с Заказать по id asc?MySQL Query - Показать последние 3 записи с заказом по возрастанию

Вот мой стол Структура: название Таблица: комментарии

enter image description here

прямо сейчас я использую этот запрос:

SELECT * 
FROM `comments` 
ORDER BY id ASC 
LIMIT 0 , 3 

Но он возвращается в результате которой очевидно:

enter image description here

Но я хочу показать последние 3 записи, но в порядке возрастания. Как это:

enter image description here

+3

хорошо написана и документированный вопрос. – markus

+0

Возможный дубликат [Как выбрать последнюю запись из таблицы MySQL с использованием синтаксиса SQl] (http://stackoverflow.com/questions/2659253/how-to-select-the-last-record-from-mysql-table-using -sql-синтаксис) – djot

+2

Нет, это не дубликат, @djot! Это примерно одна последняя запись, которая намного проще. – markus

ответ

8

Использование ниже код:

SELECT * 
    FROM (SELECT * 
     FROM `comments` ORDER BY id DESC LIMIT 0 , 3) t 
ORDER BY id ASC; 

Сначала вам сортировать по убыванию идентификатор, и получить 3 результата, а затем по возрастанию сортировать по id по этим 3 результатам.

+0

хорошая работа. это работает. – zero8

-3

Это следует сделать это:

SELECT * 
FROM `comments` 
ORDER BY id DESC 
LIMIT 0 , 3 
+0

Сделайте свой ответ хорошим ответом, объяснив, почему это будет сделано? – markus

+0

Это будет работать только с его тестовыми данными, но я уверен, что он не будет работать с реальными данными! – RiggsFolly

+0

@markus, потому что он заказывает комментарий и снизу вверх, поэтому новые идут первым. –

0
SELECT * FROM (
    SELECT * 
    FROM comments 
    ORDER BY id DESC 
    LIMIT 3 
) t ORDER by id ASC 
8
(SELECT * FROM `comments` ORDER BY id DESC limit 3) ORDER BY id ASC 

Просто изменить порядок DESC запрос со вторым ORDER BY :)

+1

Ницца, просто и работает. Я никогда не думал об этом раньше. – RiggsFolly

+1

Это должен быть принятый ответ, он позволяет избежать подзапроса. – andufo

+0

awesome, взял меня довольно долго, чтобы найти это решение, спасибо! Должен сказать, я действительно не понимаю, почему '' 'SELECT * FROM table ORDER BY id DESC, время ASC LIMIT 5''' не работает? – Can

0

попробовать этот

select * from (select * from `comments` ORDER BY id desc limit 0,3) t 
order by id asc; 
Смежные вопросы