|
выборка последних 200 записей
|
|||
---|---|---|---|
#18+
Захотелось мне выбирать последнии 200 записей, написал запрос: select * from table1 limit 200 offset ((select count(*) from table1)-200) не хочет падла работать. А как можно это по другому? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.02.2004, 17:54 |
|
выборка последних 200 записей
|
|||
---|---|---|---|
#18+
Дядь, а как определяешь какие записи последние? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.03.2004, 10:46 |
|
выборка последних 200 записей
|
|||
---|---|---|---|
#18+
Будешь смеяться, но даже такое не понимает: select * from tree limit (50 + 50) offset 100 похоже придется определять вычисляемое значение, шить строку, и загонять ее в EXECUTE. Дроп ее Ять. 2Genady: ну, если бы конструкция работала, дописать ORDER BY не проблема. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.03.2004, 11:00 |
|
выборка последних 200 записей
|
|||
---|---|---|---|
#18+
а если планируется Order by ЗАЧЕМ делать offset? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.03.2004, 11:24 |
|
выборка последних 200 записей
|
|||
---|---|---|---|
#18+
ну, если бы конструкция работала, дописать ORDER BY не проблема. без Order by воопрос вообще не имеет смысла. :) ... |
|||
:
Нравится:
Не нравится:
|
|||
01.03.2004, 12:20 |
|
выборка последних 200 записей
|
|||
---|---|---|---|
#18+
Замените выражение в order by на противоположное (возможно, с помощью desc) и используйте limit 200 (offset 0). ... |
|||
:
Нравится:
Не нравится:
|
|||
01.03.2004, 14:53 |
|
выборка последних 200 записей
|
|||
---|---|---|---|
#18+
2 LeXa NalBat оно понятно, но вопрос о передаче в инструкции LIMIT или OFFSET _вычисляемых_ значений все ж таки может рассматриваться как таковой. (не применительно к текущему вопросу). И вот тут будет засада :0) ... |
|||
:
Нравится:
Не нравится:
|
|||
01.03.2004, 15:10 |
|
выборка последних 200 записей
|
|||
---|---|---|---|
#18+
2 assa Я для этого использовал динамическое формирование запроса и выполнение его через execute. Если кому интересно могу выложить код функции, которая считает количество страниц в указанном запросе и номер страницы на которой находится заданный айдишник. :) ... |
|||
:
Нравится:
Не нравится:
|
|||
01.03.2004, 15:22 |
|
выборка последних 200 записей
|
|||
---|---|---|---|
#18+
Мдаа, а я думал решение есть. Для особенно любящих точность, последние 200 записей можно считать на время начала запроса. Но вообще зря там нельзя подставить запрос. Думаю что никто не обидится если будет такая возможность. Тем более что тема актуальна, а решение существет не в самой удобной форме. И к тому же не безопасной. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.03.2004, 17:08 |
|
выборка последних 200 записей
|
|||
---|---|---|---|
#18+
2MaximZ : конкретно вашу задачу решает предложение LeXa NalBat . Если нужно вернуть "нормальный порядок - проинвертируйте результат сортировки еще раз: SElECT * FROM (select * from table order by id desc limit 200 offset 200) as last_t ORDER BY id; что такое "порядок на момент начала"? Считается, что порядок вывода записей в реляционных бд заведомо не определен (произволен), если не навязан инструкцией ORDER BY предложения SELECT. 2Genady - о том и речь. А жальльль :0) Могли бы и реализовать разбор c учетом возможности подстановки выражения вместо константы. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.03.2004, 18:23 |
|
выборка последних 200 записей
|
|||
---|---|---|---|
#18+
Интересно откуда такие проблемы..... Мне почему-то кажется что все эти проблемы относятся к версям до 7.3. Вот вариант выдачу "последних" записей: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31.
Ну и еще примерчик.... Код: plaintext 1. 2. 3. 4. 5. 6. 7.
Да - чуть не забыл : Код: plaintext 1. 2. 3. 4. 5. 6.
Так что думаю тема исчерпана. Вычисляемые выражения допустимы в параметрах limit и offset - просто запросы ту да нужно подставлять именно как функиции. И нет никакой необходимости в EXECUTE. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2004, 16:35 |
|
выборка последних 200 записей
|
|||
---|---|---|---|
#18+
авторпроблемы относятся к версям до 7.3. по 7.3.3 включительно авторИ нет никакой необходимости в EXECUTE. "Это радовает нас" ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2004, 17:13 |
|
выборка последних 200 записей
|
|||
---|---|---|---|
#18+
Обратимся к первоисточникам 8-) Вот что написано в файле доки release.html#RELEASE-7-4: ................ * Allow expressions to be used in LIMIT/OFFSET (Tom) In prior releases, LIMIT/OFFSET could only use constants, not expressions. Однако подзапросы пока что парсер тут не пропускает: ERROR: argument of LIMIT must not contain subqueries Придется делать их в функциях до следующего релиза. ;) ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2004, 19:33 |
|
|
start [/forum/topic.php?fid=53&msg=32425555&tid=2007942]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
68ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
45ms |
get tp. blocked users: |
1ms |
others: | 12ms |
total: | 170ms |
0 / 0 |