【问题标题】:SQL Stored RoutinesSQL 存储例程
【发布时间】:2016-02-02 14:08:40
【问题描述】:

我不熟悉使用存储例程, 所以我的数据库中有一些表,我需要根据一些值进行一些计算。

CREATE DEFINER=`root`@`localhost` PROCEDURE `GetRatios`(IN `date` DATE)
LANGUAGE SQL
DETERMINISTIC
CONTAINS SQL
SQL SECURITY DEFINER
COMMENT ''
BEGIN

SELECT SUM(a.a_b), a.report_date FROM  product a, product_groups b where b.id = a.group_id AND a.report_date = `date` AND b.report_date = a.report_date AND b.name = "WHATEVER" and a.cu = b.cu and b.cu = "CU"; /*result1*/

SELECT r.r_n FROM r_l r WHERE r.id = 1 /*result2*/
INSERT INTO new_table(name, r) VALUES(result1, result2)

END

现在我的问题是我需要将这两个查询的结果插入到另一个表中。他们选择的内容并不重要,只是我必须进行不同的查询,并且我需要将它们的结果放在另一个表的一行中。提前致谢。

【问题讨论】:

    标签: mysql sql stored-procedures heidisql


    【解决方案1】:

    尝试使用

    创建变量来存储结果
    SELECT SUM(a.a_b) into variable1 FROM  product a, product_groups b where b.id = a.group_id AND a.report_date = `date` AND b.report_date = a.report_date AND b.name = "WHATEVER" and a.cu = b.cu and b.cu = "CU";
    
    
    SELECT  a.report_date into variable2 FROM  product a, product_groups b where b.id = a.group_id AND a.report_date = `date` AND b.report_date = a.report_date AND b.name = "WHATEVER" and a.cu = b.cu and b.cu = "CU";
    
    SELECT r.r_n into variable3 FROM r_l r WHERE r.id = 1 /*result2*/
    

    别忘了声明变量!

    然后

    INSERT INTO new_table(name, r) VALUES(variable1, variable2) 
    

    第一次查询返回 2 个值报告 SUM(a.a_b) 和 a.report_date 的评论。而你的第二个查询返回 r.r_n。所以你有 3 个值返回。

    您要插入所有 3 个值吗?如果是,你必须修改你的新表以匹配正确的格式:)

    【讨论】:

    • 是的,谢谢。在我看到你的答案之前想通了
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-07-12
    • 2018-05-08
    • 1970-01-01
    • 2011-10-12
    相关资源
    最近更新 更多