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

时间:2011-01-05 07:52:30

标签: mysql sql mysql-error-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);

我正在尝试构建一个指数移动平均线。部分问题是设置第一行,因此我在过程开始时声明第一行(56.41)。我相信该过程将起作用,但是当我尝试调用该过程时,我得到臭名昭着的错误“Subquery返回超过1行”错误1242.

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

我认为你的问题在于

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

raw data似乎有更多的1行,这就是可能发生错误的地方。

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

答案 1 :(得分:0)

如果你把LIMIT 1放在

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

它没有错误吗?