DROP PROCEDURE IF EXISTS `Go_ShopPing`;
DELIMITER $$
CREATE PROCEDURE Go_ShopPing(
IN v_post_id int(10)
)BEGIN
UPDATE shop_1 SET price=100 WHERE uid=v_post_id LIMIT 1;
END
$$
DELIMITER ;call Go_ShopPing(11);我共有10个shop_ 表,分别是shop_0 ~ shop_9,求问一下有什么办法能根据用户 v_post_id 的ID最后一位数,来更新对应的表吗?例如:传递过来的 v_post_id 为 11 即更新 UPDATE shop_1 SET price=100 WHERE uid=v_post_id LIMIT 1;传递过来的 v_post_id 为 32 即更新 UPDATE shop_2 SET price=100 WHERE uid=v_post_id LIMIT 1;
能实现这个逻辑吗?感谢各位大大!
DELIMITER $$
CREATE PROCEDURE Go_ShopPing(
IN v_post_id int(10)
)BEGIN
UPDATE shop_1 SET price=100 WHERE uid=v_post_id LIMIT 1;
END
$$
DELIMITER ;call Go_ShopPing(11);我共有10个shop_ 表,分别是shop_0 ~ shop_9,求问一下有什么办法能根据用户 v_post_id 的ID最后一位数,来更新对应的表吗?例如:传递过来的 v_post_id 为 11 即更新 UPDATE shop_1 SET price=100 WHERE uid=v_post_id LIMIT 1;传递过来的 v_post_id 为 32 即更新 UPDATE shop_2 SET price=100 WHERE uid=v_post_id LIMIT 1;
能实现这个逻辑吗?感谢各位大大!
SET @sqlStr = CONCAT(
'UPDATE shop_', RIGHT(v_post_id,1),' SET price=100 WHERE uid=',v_post_id,' LIMIT 1',
@tableName,
' where ',
col_name,
' is not null limit 1'
);PREPARE stmt
FROM
@sqlStr;-- 预定义一个语句,并将它赋给 stmt
EXECUTE stmt;