2009-08-20 17 views
8

Powiedz, że definiuję alias "licznik" w mojej kwerendzie do wyboru i chcę ograniczyć kwotę zwróconą do zliczenia/5 (lub 20% tabeli).Mysql - LIMIT według procentu?

Jak mogę to zrobić? Wydaje się, że Mysql nie bierze niczego poza liczbami całkowitymi, a nie funkcjami.

Odpowiedz

12

Prawidłowo. Klauzula LIMIT przyjmuje przesunięcie i liczbę wierszy, a nie procent. Myślisz o Microsoft SQL Server, który obsługuje SELECT TOP 20 PERCENT ... (zauważ, że ani LIMIT ani TOP nie są określone w standardowym SQL).

Chciałbym to zrobić na dwa pytania:

SELECT COUNT(*) FROM MyTable WHERE ...conditions... 

SELECT * FROM MyTable WHERE ...conditions... ORDER BY ...order... LIMIT ? 

Wymień parametr ? z hrabia/5.

Nie trzeba rozwiązać każdy problem w jednym zapytaniu.

+0

tylko dodać, wierzę, że prowadzenie tych dwóch kwerend nie * nie * spowoduje znaczne ponieważ MySQL powinien buforować wynik pierwszego zapytania, a drugi będzie działał o wiele szybciej. – DisgruntledGoat

5

Klauzula LIMIT może przyjmować 2 argumenty i musi być liczbą całkowitą.

można spróbować coś takiego

SET @skip=1; SET @numrows=(select count(*) div 5 from tbl); 
PREPARE STMT FROM 'SELECT * FROM tbl LIMIT ?, ?'; 
EXECUTE STMT USING @skip, @numrows;