这次我有一个MySQL问题,我正在尝试创建一个执行预准备语句的存储过程,目标是从表中获取一个远程列表(“order_info
”),列表除以“页面”,每个页面由记录计数确定,应使用排序为'ASC'
或'DESC'
的特定字段进行排序,每个记录代表“order
”捕获这是程序返回特定组的订单,该订单与属于user
的{{1}}相关联。这是我到目前为止所做的:
group
执行此操作时出现语法错误,即使编辑器没有突出显示任何错误并让我保存程序,我认为其中一个可能正在发生:
我测试了这个标准查询:
CREATE DEFINER=`root`@`%` PROCEDURE `getGroupOrders`(IN grp INT,
IN page INT,
IN count INT,
IN ord TINYINT,
IN srt VARCHAR(4)
)
BEGIN
PREPARE prepGroupOrders FROM
"SELECT oi.* FROM `dbre`.`order_info` oi
INNER JOIN `dbre`.`users` usr
ON oi.`username` = usr.`username` AND usr.`id_group` = ?
ORDER BY ? ? LIMIT ?, ?";
SET @g := grp;
SET @cnt := count;
SET @start := @page*count ;
SET @orderBy := ord;
SET @sortBy := srt;
EXECUTE prepGroupOrders USING @g,@orderBy,@sortBy,@start,@cnt;
END
它给了我想要的结果。那我该怎么设计这个程序呢? 真的很感激任何帮助。
答案 0 :(得分:0)
这可能不一定能解决您的问题,但是,您可以稍微清理一下该查询,消除子查询并获得应该执行得更好的内容。
SELECT oi.*
FROM `dbre`.`order_info` oi
INNER JOIN `dbre`.`users` u
ON oi.username = u.username
AND u.id_group = 1
ORDER BY `status` DESC
LIMIT 5, 10;