qq_39372401 2018-10-17 06:35 采纳率: 75%
浏览 2572
已结题

mysql 动态拼接SQL语句求大神解答

DELIMITER $$
CREATE PROCEDURE bb_HL_sum_product3
(
IN name VARCHAR(200)
)
begin

drop TABLE tmp_reasult;
declare cal1 varchar(800) ;
set cal1="
insert into tmp_reasult(产品名称,募集规模,已募额度,杠杆率,成立时间)
select product_name,project_money,PROJECT_ORDER_MONEY,extend8,setup_date
from t_product where delete_flag=0

"

if(name<>"" )
begin
#产品名称
set SQL_FOR_SELECT= concat(SQL_FOR_SELECT," "," and product_name like ","'","%name%","'")

end

PRINT cal1
EXECUTE cal1;

EXECUTE(
'update tmp_reasult set 客户总数=tmp.s1 '
+'from t_contract_order, '
+'(select count(distinct CUSTOMER_SEED) as s1,product_name from t_contract_order '
+'group by product_name )tmp where tmp_reasult.产品名称=tmp.product_name '
)

DEALLOCATE PREPARE cal1 ;

END$$

DELIMITER ;

这是我写的存储过程,但是在Navicat里面报错,估计是关于定义变量,进行拼装语句的写法有错了。请大神帮忙看看

  • 写回答

1条回答 默认 最新

  • paavochan 2018-10-22 08:51
    关注

    update tmp_reasult set 客户总数=tmp.s1 from t_contract_order,
    (select count(distinct CUSTOMER_SEED) as s1,product_name from t_contract_order
    group by product_name )tmp where tmp_reasult.产品名称=tmp.product_name
    mysql 不支持 update 子查询更新,你用这个试试:
    update tmp_reasult a inner join t_contract_order b on a.产品名称 = b.product_name
    set a.客户总数 = b.s1 where a.产品名称 = b.product_name

    评论

报告相同问题?

悬赏问题

  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
  • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)
  • ¥20 matlab yalmip kkt 双层优化问题
  • ¥15 如何在3D高斯飞溅的渲染的场景中获得一个可控的旋转物体
  • ¥88 实在没有想法,需要个思路
  • ¥15 MATLAB报错输入参数太多
  • ¥15 python中合并修改日期相同的CSV文件并按照修改日期的名字命名文件
  • ¥15 有赏,i卡绘世画不出
  • ¥15 如何用stata画出文献中常见的安慰剂检验图
  • ¥15 c语言链表结构体数据插入