Mysql 选择一行以上的localVariable

Mysql 选择一行以上的localVariable,mysql,Mysql,错误:结果包含多行 好的,我理解错误消息,但有什么解决方案可以在变量/列表中存储多行吗 使用a-我会给出一个例子,但由于您的代码没有做任何有意义的事情,因此不可能给出建议 查看您的代码,创建视图甚至可能比使用半临时表更合适,尽管后一种方法有很多优点,特别是如果数据可以跨会话持久化 实际上,可以用一个select语句来描述该功能。此处代码的剩余部分效率很低,但您再次将代码弄乱,以至于删除了其中的任何含义。No,使用临时表。如下所示:如果不存在,则创建临时表tmp作为选择cip.modifier*c

错误:结果包含多行

好的,我理解错误消息,但有什么解决方案可以在变量/列表中存储多行吗

使用a-我会给出一个例子,但由于您的代码没有做任何有意义的事情,因此不可能给出建议

查看您的代码,创建视图甚至可能比使用半临时表更合适,尽管后一种方法有很多优点,特别是如果数据可以跨会话持久化


实际上,可以用一个select语句来描述该功能。此处代码的剩余部分效率很低,但您再次将代码弄乱,以至于删除了其中的任何含义。

No,使用临时表。如下所示:如果不存在,则创建临时表tmp作为选择cip.modifier*cip.price*coalesccastcip.quantity作为签名,1来自CustomerVoicePosition cip…在此结束之前;这里有一个部分:插入到新表param1、param2、param3、param4中,从customerInvoicePosition cip中选择SUMtmp*ifcip.type=0,1,0、SUMtmp*ifcip.type=1,1,0、SUMtmp*ifcip.type=3,1,0。。。终止
CREATE PROCEDURE procedure() BEGIN
    DECLARE tmp DECIMAL(8,2) ;
    SELECT cip.modifier * cip.price * COALESCE(CAST(cip.quantity AS SIGNED), 1) INTO tmp FROM customerInvoicePosition cip...
    SELECT SUM(tmp * (if(cip.type=0,1,0))) FROM customerInvoicePosition cip...
    SELECT SUM(tmp * (if(cip.type=1,1,0))) FROM customerInvoicePosition cip...
    SELECT SUM(tmp * (if(cip.type=2,1,0))) FROM customerInvoicePosition cip...
    SELECT SUM(tmp * (if(cip.type=3,1,0))) FROM customerInvoicePosition cip...
    END;