如何在mysql中使用存储过程将存储过程的结果向上插入到表中

hpcdzsge  于 2021-06-24  发布在  Mysql
关注(0)|答案(0)|浏览(278)

当我通过在存储过程中提到call ranking_long()来运行存储过程ranking_long()时,结果如下所示。

product_id  plg_count   rank
11          6962271     1
10          2705517     2
379         1955067     3
378         196865      4
...........

现在我需要使用存储过程将上面的结果向上插入(当有相同的产品标识时更新,或者当没有相同的产品标识时插入)到名为dtb\u ranking的表中,该表的结构与上面的结果(产品标识、plg\u count、rank)相同。所以我尝试了下面的存储过程,

INSERT INTO dtb_ranking (`product_id`,`plg_count`,`rank`) VALUES (CALL `ranking_long`()) ON DUPLICATE KEY UPDATE plg_count = VALUES(plg_count), rank = VALUES(rank);

我收到了如下的错误信息。
处理您的请求时出现一个或多个错误:无法执行查询:

CREATE DEFINER=xxxxxxx@% PROCEDURE call_ranking_long() 
   NOT DETERMINISTIC
   NO SQL
   SQL SECURITY DEFINER

  INSERT INTO dtb_ranking
    (product_id,plg_count,rank)
  VALUES (CALL ranking_long())
 ON DUPLICATE KEY UPDATE plg_count = VALUES(plg_count), rank = VALUES(rank);

mysql的消息:#1064-您的sql语法有错误;请查看与mysql服务器版本对应的手册,以了解在第1行的重复键更新plg\u count=values(plg\u count),ra'上使用“call ranking\u long()”附近的正确语法
如果有人能告诉我应该如何处理上面的脚本(插入到dtb\ U排名…),我将不胜感激。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题