Что делает использование отрицательного значения для MySQL LIMIT? - PullRequest
7 голосов
/ 24 марта 2012

Так что же происходит, когда вы используете отрицательное значение в предложении LIMIT?Будут ли отрицательные последствия (небольшой каламбур)?

Я не вижу никакой документации по этому вопросу, и форумы MySQL, насколько я помню, sux.

Справочная информация: я использую MySQLCE 5.5.20.Я написал хранимую процедуру, которая принимает параметр int и использует его для предложения LIMIT.Мне нужен был способ вернуть все строки, если я хотел, поэтому я попытался передать -1 для параметра limit в моей процедуре / процедуре сохранения, и это сработало.

Ответы [ 2 ]

5 голосов
/ 20 сентября 2012

Согласно документации , это должно быть неотрицательное целое число

Предложение LIMIT может использоваться для ограничения количества строк, возвращаемых оператором SELECT. LIMIT принимает один или два числовых аргумента, которые оба должны быть неотрицательными целочисленными константами (кроме случаев использования подготовленных операторов).

Мне кажется, что то, что вы испытываете, является недокументированной ошибкой, в этом случае mysql должен выдавать ошибку, если параметры не соответствуют требованиям документации.

Я бы предложил использовать синтаксически исправленный SQL в вашей хранимой процедуре. Вы все еще можете использовать отрицательный int как флаг, чтобы показать все, хотя. Как то так

IF myparam >= 0 THEN
    SELECT * FROM `mytable` LIMIT myparam;
ELSE
    SELECT * FROM `mytable`;
END IF;
0 голосов
/ 23 апреля 2012

При использовании этого в других версиях MySQL может возникнуть ошибка.

The error in MySQL

...