Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > MySQL > Выбор последних X записей


Автор: Syned 26.5.2006, 20:44
как сформулировать такой запрос?

...LIMIT X, X не подходит

Спасибо заранее! 

Автор: Kesh 26.5.2006, 21:25
Syned, попробуй отрицательные числа в LIMIT smile 

Автор: Syned 26.5.2006, 21:40
не получается 

Код

mysql> SELECT * FROM postwall ORDER BY postw_id ASC LIMIT -10;


Цитата
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that
corresponds to your MySQL server version for the right syntax to use near '-10'
  

Автор: skyboy 26.5.2006, 22:15
могу предложить изврат:
Код

SELECT (select max(postw_id) from postwall) - postw_id,postw_id FROM postwall order by 1 limit 10

Естевтсенно, это может работать довольно долго. Потому вместо работы с функцией максимального значения можно обратиться к таблице в information_schema(не помню, какую таблицу), в которой хранится текущее значение автоинкрементного ключа для нужной тебе таблицы.
з.ы. Это и в самом деле изврат:
- если ты имеешь в виду MySQL Server  у хостера, то у тебя вполне не может быть прав на доступ к информационной схеме
- в любом варианте, такой подход будет работать неспешно.
Вывод - надо делать что-то другое... Может, изменить структуру... 
@22.16
Ааа.. 
Код

SELECT * FROM postwall ORDER BY postw_id DESC LIMIT 10
 
Ушёл вешаться smile 

Автор: Ignat 29.5.2006, 08:54
Цитата(skyboy @  26.5.2006,  23:15 Найти цитируемый пост)
Ааа.. 
Выделить всёкод SQL
1:
    
SELECT * FROM postwall ORDER BY postw_id DESC LIMIT 10


ИМХО, единственно правильное решение.


Syned, а в чем вообще проблема?  

Автор: Syned 12.7.2006, 19:23
Ignat, в том, что в этом случае записи выводятся с конца вверх, а надо наоборот 

Автор: Ignat 13.7.2006, 09:20
Цитата(Syned @  12.7.2006,  20:23 Найти цитируемый пост)
Ignat, в том, что в этом случае записи выводятся с конца вверх, а надо наоборот  

Ну тогда так:

Код

SELECT * FROM (SELECT * FROM postwall ORDER BY postw_id DESC LIMIT 10) AS `temp_postwall` ORDER BY postw_id;


Ессесно * поменять на имена полей.
Вообще лучше выбрать в обратном порядке, а реверснуть массив уже на клиенте. 

Автор: Gold Dragon 13.7.2006, 22:34
Syned, а действительно.. ты же всё равно будешь окончательную выборку делать каким-нибудь циклом, можно смело пустить цикл в обратном порядке и не мудрить smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)