Mysql - вернуть последние 3 результата в таблицу - PullRequest
1 голос
/ 17 июня 2010

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

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

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

Ответы [ 4 ]

7 голосов
/ 17 июня 2010

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

SELECT * FROM (SELECT * FROM some_table ORDER BY id DESC LIMIT 3) a ORDER BY id
3 голосов
/ 17 июня 2010

Полагаю, два варианта.

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

  2. Вы можете сначала узнать количество результатов в таблице, затем выполнить LIMIT , 3

2 голосов
/ 17 июня 2010

Это нормально, если вы просто переверните его обратно в исходный порядок?

SELECT * FROM (SELECT * FROM SOMETABLE ORDER BY ID DESC LIMIT 3) AS T ORDER BY ID;
0 голосов
/ 17 июня 2010
Select * 
FROM (SELECT * FROM yourTABLE ORDER BY ID DESC LIMIT 0,3) as TempTable ORDER BY ID
...