Mysql - LIMIT в процентах? - PullRequest
8 голосов
/ 21 августа 2009

Скажем, я определяю псевдоним 'count' в своем запросе выбора и хочу ограничить возвращаемую сумму до count / 5 (или 20% от таблицы).

Как я могу это сделать? Mysql, похоже, не принимает ничего, кроме целых чисел, а не функций.

Ответы [ 3 ]

11 голосов
/ 21 августа 2009

Правильно. Предложение LIMIT принимает смещение и количество строк, а не процент. Вы думаете о Microsoft SQL Server, который поддерживает SELECT TOP 20 PERCENT ... (обратите внимание, что ни LIMIT, ни TOP не указаны в стандартном SQL).

Я бы сделал это в двух запросах:

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

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

Заменить параметр ? на количество / 5.

Вам не нужно решать каждую проблему в одном запросе.

5 голосов
/ 21 августа 2009

Предложение LIMIT может принимать 2 аргумента и должно быть целочисленной константой.

Вы можете попробовать что-то вроде этого

SET @skip=1; SET @numrows=(select count(*) div 5 from tbl );
PREPARE STMT FROM 'SELECT * FROM tbl LIMIT ?, ?';
EXECUTE STMT USING @skip, @numrows;
0 голосов
/ 21 августа 2009

Просмотр хранимых подпрограмм MySQL (процедур / функций)
http://dev.mysql.com/doc/refman/5.1/en/create-procedure.html

...