当我通过在存储过程中提及调用ranking_long()来运行存储过程ranking_long()时,结果如下。
product_id plg_count rank
11 6962271 1
10 2705517 2
379 1955067 3
378 196865 4
...........
现在我需要upsert(当存在相同的product_id时更新或者当没有相同的product_id时插入)将上面的结果放入名为dtb_ranking的表中,该表具有与上述结果相同的结构(product_id,plg_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服务器版本对应的手册 在'CALL ranking_long()'附近使用的语法在DUPLICATE KEY UPDATE上 plg_count = VALUES(plg_count),第1行的ra'
如果有人能告诉我应该用上面的脚本做什么(INSERT INTO dtb_ranking ......),我将不胜感激。