mysql存储过程

本文详细介绍如何将复杂的MySQL查询转换为存储过程,通过创建临时表优化查询效率,实现根据产品ID获取成交记录的功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

mysql 查询如下:
SELECT 
  b.memberId,
  b.memberName,
  aa.orderid,
  aa.productid,
  aa.productname,
  aa.other,
  aa.num,
  c.paytime 
FROM
  (SELECT 
    a.orderid,
    a.productid,
    a.productname,
    a.other,
    SUM(a.number) num 
  FROM
    pengcz_order.order_details_b2b a 
  GROUP BY a.orderid,
    a.productid,
    a.productname,
    a.other) aa,
  pengcz_order.`order_current` b,
  pengcz_order.`order_paymoney` c 
WHERE aa.`orderId` = c.`orderId` 
  AND aa.orderid = b.orderid
  AND aa.productid ='3952584' LIMIT 1,20;

转换成存储过程如下:
DELIMITER $$

USE `pengcz_order`$$

DROP PROCEDURE IF EXISTS `pub_shopProductRecordByProductId`$$
CREATE
    DEFINER = `root`@`%` 
    PROCEDURE `pengcz_order`.`pub_shopProductRecordByProductId`(IN productId VARCHAR(50),IN page INT,IN pagesize INT)
    COMMENT '根据产品id获取成交记录'
    BEGIN
    /**
     * 创建临时表
     * 用于存放订单交易快照明细表查出来的集合
     */
     DROP TABLE IF EXISTS `detail`;
     CREATE TEMPORARY TABLE `detail` (
    `orderId` VARCHAR(45) NOT NULL,
    `productId` VARCHAR(36) NOT NULL,
    `productName` VARCHAR(200) NULL,
    `other` VARCHAR(200) NULL,
    `num` INT(11) NOT NULL DEFAULT '0'
     );
     SET @SQL=CONCAT("insert into `detail` select `orderId`,`productId`,`productName`,`other`,SUM(number) from `pengcz_order`.`order_details_b2b` group by `orderId`,`productId`,`productName`,`other`");
     PREPARE m FROM @SQL;
     EXECUTE m;
     DEALLOCATE PREPARE m;
     /**
      * 使用临时表做查找
      */
     SET @SQL=CONCAT("select b.memberId,b.memberName,a.orderid,a.productid,a.productname,a.other,a.num,c.paytime from `detail` a,pengcz_order.`order_current` b,pengcz_order.`order_paymoney` c where a.`orderId` = c.`orderId` AND a.orderid = b.orderid AND a.productid ='",productId,"' limit ",page,",",pagesize);
     PREPARE m FROM @SQL;
     EXECUTE m;
     DEALLOCATE PREPARE m;
     /**
      * 清理临时表
      */
    DROP TABLE `detail`;
    END$$

DELIMITER ;


CALL pub_shopProductRecordByProductId('3952584',1,20);

 

基于Spring Boot搭建的一个多功能在线学习系统的实现细节。系统分为管理员和用户两个主要模块。管理员负责视频、文件和文章资料的管理以及系统运营维护;用户则可以进行视频播放、资料下载、参与学习论坛并享受个性化学习服务。文中重点探讨了文件下载的安全性和性能优化(如使用Resource对象避免内存溢出),积分排行榜的高效实现(采用Redis Sorted Set结构),敏感词过滤机制(利用DFA算法构建内存过滤树)以及视频播放的浏览器兼容性解决方案(通过FFmpeg调整MOOV原子位置)。此外,还提到了权限管理方面自定义动态加载器的应用,提高了系统的灵活性和易用性。 适合人群:对Spring Boot有一定了解,希望深入理解其实际应用的技术人员,尤其是从事在线教育平台开发的相关从业者。 使用场景及目标:适用于需要快速搭建稳定高效的在线学习平台的企业或团队。目标在于提供一套完整的解决方案,涵盖从资源管理到用户体验优化等多个方面,帮助开发者更好地理解和掌握Spring Boot框架的实际运用技巧。 其他说明:文中不仅提供了具体的代码示例和技术思路,还分享了许多实践经验教训,对于提高项目质量有着重要的指导意义。同时强调了安全性、性能优化等方面的重要性,确保系统能够应对大规模用户的并发访问需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值