2010-06-17 2 views
0

Мне было интересно, был ли простой способ только с помощью инструкции sql, чтобы вернуть последние три результата в таблицу, но в этом порядке, то есть, если есть измеченные результаты, она вернется в порядок 98, 99, 100 не просто упорядочивается по идентификатору DESC и пределу 3, который возвращается в порядке 100, 99, 98Mysql - возвращает последние 3 результата в таблице

Любая помощь очень ценится.

p.s. в этом случае, скажем, я не знаю количество результатов и не хочу отправлять 2 sql-запросов только для того, чтобы найти сумму (для любых ответов OFFSET).

ответ

7

Один из способов будет использовать DESC, а затем просто сортировать их снова:

SELECT * FROM (SELECT * FROM some_table ORDER BY id DESC LIMIT 3) a ORDER BY id 
+0

все очень похожие ответы, но спасибо всем, ура Lukas –

+0

получать заблуждается _error_ 1 У вас ошибка в вашем SQL синтаксиса; проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса для использования рядом с ORDER BY ID DESC LIMIT 3) AS T ORDER BY TIME_STAMP 'по строке 1 –

+0

Отправьте запрос. Кроме того, разве вы не хотите «ORDER BY TIME_STAMP DESC» во внутреннем запросе? –

0
Select * 
FROM (SELECT * FROM yourTABLE ORDER BY ID DESC LIMIT 0,3) as TempTable ORDER BY ID 
3

два варианта, я думаю.

  1. Вы можете использовать DESC, чтобы вернуть их в обратном порядке, как вы заявили, и просто изменить порядок в коде приложения. Это потенциально наиболее эффективно, поскольку вы можете сделать это в одном запросе, и ему может потребоваться прочитать только три строки индекса.

  2. Вы можете первым узнать количество результатов в таблице, а затем сделать ПРЕДЕЛЬНОГО < результаты 3>, 3

+0

Followup: для большой таблицы или сложного запроса второй вариант может быть намного медленнее. Первое лучше. – thomasrutter

1

это хорошо, если вы просто переверните его обратно к оригиналу заказ?

SELECT * FROM (SELECT * FROM SOMETABLE ORDER BY ID DESC LIMIT 3) AS T ORDER BY ID; 
Смежные вопросы