Застрял в процедуре MYSQL, используя «порядок по переменной» - PullRequest
0 голосов
/ 04 апреля 2011

это параматер

IN `_user_id` VARCHAR(50), 
IN `_page` INT, 
IN `_sort_type` VARCHAR(50), 
IN `_order_type` VARCHAR(50)

и это процедура

BEGIN

if _page < 0 then
    set _page = 0;
end if;

if _sort_type='idx' then
    set _sort_type = '__idx';
end if;


PREPARE STMT FROM
"
select idx, trash, publisher_user_id as user_id
from n_board 
where publisher_user_id = ?
order by ? desc LIMIT ?,?";
SET @publisher_user_id = _user_id;
SET @sort_type = _sort_type;
SET @order_type = _order_type;
SET @START = _page*4;
SET @END = 4;
EXECUTE STMT USING @publisher_user_id, @sort_type, @START, @END;
END

Это часть моего кода. Я сделал этот код из-за переменной limit. Я слышал, что MYSQL 5.5 поддерживает такой код, как 'limit variable, variable'. Это правильно? Я использую 5.0.77.

Я надеюсь использовать сортировку по типу сортировки следующим образом:

'order by ? ? LIMIT ?,?'

но это не работает.

select no from n_board where id = ? order by ? ? LIMIT ?,?"; -> синтаксическая ошибка

select no from n_board where id = ? order by ? desc LIMIT ?,?";

-> Я получаю результаты, но 'order by desc' не оказывает никакого влияния.

Что я могу сделать?

1 Ответ

0 голосов
/ 04 апреля 2011

Попробуйте не использовать @LIMIT в качестве переменной, это может быть расстроено, потому что это зарезервированное слово.

...