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;
错误:结果包含多行
好的,我理解错误信息,但是有一些解决方案可以在变量/列表中存储多行吗?
答案 0 :(得分:0)
使用cursor - 我举例说明,但由于您的代码没有做任何有意义的事情,因此无法提供建议。
查看代码,甚至可能适合创建视图而不是使用(半 - ?)临时表(尽管后一种方法有优势,特别是如果数据可以跨会话持续存在)。
实际上,有可能在单个select语句中描述功能(这里的代码左边的内容非常不足)但是你再次将代码破坏到了删除任何含义的程度从它。