+ -
当前位置:首页 → 问答吧 → mysql 中limit 参数限定为常量。。。。但我需要使用变量啊。怎么办?

mysql 中limit 参数限定为常量。。。。但我需要使用变量啊。怎么办?

时间:2011-10-19

来源:互联网

mysql 中limit 参数限定为常量。。。。但我需要使用变量啊。怎么办?
SQL code

134 DROP PROCEDURE IF EXISTS `queryAuxMat`$$
135 CREATE PROCEDURE queryAuxMat(IN _start INTEGER,IN _size INTEGER)
136 BEGIN
137     SELECT * FROM tb_supply_deman   
138     INNER JOIN (
139         SELECT * FROM tb_aux_mat_info LIMIT 0,10 
140     ) as tmep ON 
141     tb_supply_deman.info_uuid = tmp.join_uuid;
142 
143     SELECT count(uuid) AS rows_count  FROM tb_aux_mat_info; 
144 END$$



139行的limit我需要使用变量,怎么办?
在线等,,,,,急,,,,
如果使用limit不能实现分页查询,有没有其他方法可以实现啊?procedure的参数不变的情况下实现分页查询。

作者: aeolus_boy   发布时间: 2011-10-19

你可以传个动态的变量直啊
 SELECT * FROM tb_aux_mat_info LIMIT (pageNo - 1) * pageUnit, pageUnit; 

作者: zysnba   发布时间: 2011-10-19

我废话不多说了哦,直接写了个案例给你看看
SQL code

DROP PROCEDURE IF EXISTS `GetUser`;
CREATE  PROCEDURE `GetUser`(size INT)
begin
    SELECT * from tig_users WHERE 1=1 LIMIT  0,size;
end;



在MySql里查询tig_users表的数据,size是条件,放在limit里,这里用做是变量

SQL code

CALL GetUser(2);



执行这个存储过程,传一个2给他,那么查询出来的就有两条数据了

楼主再试试

作者: laughing__   发布时间: 2011-10-19

引用 1 楼 zysnba 的回复:

你可以传个动态的变量直啊
SELECT * FROM tb_aux_mat_info LIMIT (pageNo - 1) * pageUnit, pageUnit;
不能为表达式

作者: aeolus_boy   发布时间: 2011-10-19

引用 2 楼 laughing__ 的回复:

我废话不多说了哦,直接写了个案例给你看看
SQL code

DROP PROCEDURE IF EXISTS `GetUser`;
CREATE PROCEDURE `GetUser`(size INT)
begin
SELECT * from tig_users WHERE 1=1 LIMIT 0,size;
end;



在MySql里查询tig_users表的数据,……
行不通,
可能是版本问题。我的是:
mysql Ver 14.14 Distrib 5.1.56, for redhat-linux-gnu (i386) using readline 5.1

作者: aeolus_boy   发布时间: 2011-10-19

sql = "select * from goods limit " + pageSize*(pageNow-1) + "," + pageSize
楼主试试这样行吗?

作者: wei13636075   发布时间: 2011-10-19

没用过存储过程做分页

作者: cbxjj   发布时间: 2011-10-19

可以在 外面 计算好 之后! 再传参数 进去! 那样可以计算了!也不是公式!

作者: lianjiaying   发布时间: 2011-10-19

引用 5 楼 wei13636075 的回复:

sql = "select * from goods limit " + pageSize*(pageNow-1) + "," + pageSize
楼主试试这样行吗?

不行

作者: aeolus_boy   发布时间: 2011-10-19

不行啊啊啊

作者: aeolus_boy   发布时间: 2011-10-19