Mysql 子查询返回超过1行/指数移动平均值

Mysql 子查询返回超过1行/指数移动平均值,mysql,sql,mysql-error-1242,Mysql,Sql,Mysql Error 1242,我试图构造一个指数移动平均线。问题的一部分是设置第一行,因此我在过程开始时声明第一行56.41。我相信这个过程会工作,但是当我尝试调用这个过程时,我得到了臭名昭著的错误子查询返回的不止一行错误1242 非常感谢您的帮助 我认为你的问题在于 CREATE DEFINER = `ninja_dba`@`` PROCEDURE `adb`.`MACD12`( x int) LANGUAGE SQL DETERMINISTIC READS SQL DATA SQL SECURITY DEFINER CO

我试图构造一个指数移动平均线。问题的一部分是设置第一行,因此我在过程开始时声明第一行56.41。我相信这个过程会工作,但是当我尝试调用这个过程时,我得到了臭名昭著的错误子查询返回的不止一行错误1242


非常感谢您的帮助

我认为你的问题在于

CREATE DEFINER = `ninja_dba`@`` PROCEDURE `adb`.`MACD12`( x int)
LANGUAGE SQL
DETERMINISTIC
READS SQL DATA
SQL SECURITY DEFINER
COMMENT ''
BEGIN

MACD_12:BEGIN
DECLARE z FLOAT;  
DECLARE y FLOAT default 56.41;
DECLARE w float;

WHILE x < 10 do
INSERT  into `MACD`(
x,y,z,X12) select z,y,x,w;

SET  z= IFNULL ( (y + ((2/13) * (w - y))),Y) ;
SET y=z;
SET x =x+1;
SET w = (select close from`raw data`);

end while;

end MACD_12;

END

call macd12 (1);
看起来原始数据的行数超过了1行,这就是可能发生错误的地方


您需要指定条件WHERE子句,或者使用LIMIT语句。

如果在

SET w = (select close from`raw data`);

它能正常工作吗?

限制为1时,我不会出错。调整限制任何大于1的值,我就会得到:子查询返回超过1行
SET w = (select close from`raw data`);