MySQL - last N

4 отговора 217 прегледа
#1

MySQL - last N

Може да е много тъп и елементарен въпорса, но не мога да се сетя в момента как става.
Как да взема последните N елемента от една заявка?

Сайт за нова българската литература [линк]
Вече ДВЕ години
Отговор
в отговор на Ивaнyшka #2

Re: MySQL - last N

Какъв сървър е това?
Иначе, ако имаш ORDER BY в заявката, можеш да направиш примерно така:
... ORDER BY xxx DESC LIMIT n (MySQL)
или
SELECT TOP n ... ORDER BY xxx DESC (MS-SQL)

Отговор
в отговор на bass #3

Re: MySQL - last N

Бе то пише MySQL в заглавието, но това, което предлагаш не е решение -
не искам да ми се обръща редът на подреждане, искам да отрежа само най-крайните.
Аз го направих на два пъти - първата заявка пресмята броя, а другата пуска лимит LAst-N, LAST
ако имаше вложени заявки, щеше да е лесно

Сайт за нова българската литература [линк]
Вече ДВЕ години
Отговор
в отговор на Ивaнyшka #4

Re: MySQL - last N

>>... то пише в заглавието...
Да, но не е достатъчно - някой трябва и да чете :-\\\ (а по-лошото е, че вероятно съм го прочел, ама съм го запомнил за около 2 секунди...)

>>не искам да ми се обръща редът на подреждане, искам да отрежа само най-крайните
Именно де - режеш само най-крайните (които при "обратна" подредба са първи) и, обхождайки ги в обратен ред, получаваш пак "права" подредба. Но, разбира се, това няма да стане, ако ползваш някакъв unidirectional dataset :-\\

btw, няма ли начин да дадеш още малко инфо за API-то, което ползваш (PHP, C++, Delphi, etc.), за заявката и за начина на употреба на получения резултат, че така става малко наизуст :-)

Отговор
в отговор на Ивaнyшka #5

Re: MySQL - last N

По принцип може да използваш -1 като втори параметър, но това предполага да занеш предварително колко реда ще върне заявката

... LIMIT 10, -1;

Това ще ти върне "всички редове от 10-тия нататък"
Та ако знаеш, че редовете са 150 пък искаш последните 5
... LIMIT 145, -1;

salle.online.bg/sig
Отговор