我想在限制中使用pollNo,但它会出错:
错误:脚本行:4你有一个 SQL语法错误;检查 与您的MySQL对应的手册 用于正确语法的服务器版本 在'pollNo,1)附近使用作为A连接 A.id = poll_data.poll_id;
上的poll_data 第6行END'
DELIMITER $$
DROP PROCEDURE IF EXISTS `prj`.`ret_poll` $$
CREATE PROCEDURE `prj`.`ret_poll` (IN pollNo int)
BEGIN
select * from
(select * from poll limit pollNo,1 )as A
JOIN poll_data
on A.id=poll_data.poll_id;
END $$
DELIMITER ;
答案 0 :(得分:2)
您使用的是哪个版本的MySQL?我认为这在5.5和转发中已得到修复,但之前的版本需要一种解决方法,因为它们需要整数常量或预处理语句。
因此,在5.5之前,您应该可以执行以下操作;
DELIMITER $$
DROP PROCEDURE IF EXISTS `prj`.`ret_poll` $$
CREATE PROCEDURE `prj`.`ret_poll` (IN pollNo int)
BEGIN
PREPARE STMT FROM "select * from (select * from poll limit ?,1 ) as A join poll_data on A.id=poll_data.poll_id";
SET @start = pollNo;
EXECUTE STMT USING @start;
END $$
DELIMITER ;
您可以在此处详细了解:http://bugs.mysql.com/bug.php?id=11918
答案 1 :(得分:1)
LIMIT
需要一个整数作为输入,而不是列名。要做你正在谈论的事情需要动态查询。
这是一个forum post,讨论在MySQL中执行动态SQL。