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

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 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题