2014-09-25 3 views
1

у меня есть ошибка в моем синтаксисом:предел MySQL с переменной

SET @start := 0; 
SELECT (ROUND((count(item))/2)) FROM car INTO @until; 
SELECT * from car limit @until OFFSET @start; 

У Вас есть ошибка в вашем SQL синтаксиса; проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса, используемого рядом с «@until OFFSET @start» по строке 1

Любой может мне помочь? спасибо

ответ

0

Вы не можете использовать назначаемую пользователем переменную (@until) в предложении LIMIT.

Возможное решение (вариация на this):

SELECT (ROUND((count(item))/2)) FROM car INTO @until; 
SELECT * FROM (
    SELECT *, 
     @rownum := @rownum + 1 AS rank 
    FROM car, 
     (SELECT @rownum := 0) r 
) d WHERE rank < @until; 

Единственным недостатком является то вы потеряете смещение, но вы можете приспособить, что, регулируя положение WHERE. В противном случае вы можете использовать хранимую процедуру.

+0

[Err] 1064 - У вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса для использования рядом с:: = @until в строке 1 – empugandring

+0

Лома, проблема заключается в том, что вы используете переменную с 'LIMIT'. Кажется, вы не можете использовать его там: http://stackoverflow.com/questions/245180/variable-limit-clause-in-mysql. Я обновляю свой ответ с возможным решением. – kasimir

Смежные вопросы