2009-08-26 169 views
0

我试图运行下面显示的查询以将结果包括在报告中,并且得到Operand should contain 1 column错误#1241。我一直无法弄清楚这个原因。如果我在自己独立运行这一部分,我没有得到任何错误:(pct_return_1 * .25) + (pct_return_2 * .25) + (pct_return_3 * .15) + (pct_return_4 * .15) + (pct_return_5 * .2)mySQL操作数应该包含1列错误

下面是代码:

DROP TABLE IF EXISTS temp_5; 
CREATE TABLE temp_5 (
    date_value date default NULL, 
    pct_return_portfolio double default NULL, 
    pct_return_benchmark double default NULL); 

INSERT INTO temp_5 (date_value, pct_return_portfolio, pct_return_benchmark) 
SELECT 
(date_value, 
    (pct_return_1 * .25) + 
    (pct_return_2 * .25) + 
    (pct_return_3 * .15) + 
    (pct_return_4 * .15) + 
    (pct_return_5 * .2) 
    FROM Temp_4), 
pct_return_6) 
FROM temp_4; 

回答

0

尝试删除的FROM Temp_4第一次出现(只是在子查询中的第二个值一前一后) 。

编辑:也仔细检查括号分组,如下面的例子:

INSERT INTO table2 (field1, field2, field3, field4) (SELECT 'value1 from user input', field1, field2, field3 from table1) 

这是此页面上给出关于插入子查询:http://dev.mysql.com/doc/refman/5.1/en/subqueries.html

+0

我试过了你的建议,下面是我的实际查询。查询未成功运行。我收到了同样的错误信息。 INSERT INTO temp_5(DATE_VALUE,pct_return_portfolio,pct_return_benchmark) SELECT (DATE_VALUE, ( (pct_return_1 * 0.25)+ (pct_return_2 * 0.25)+ (pct_return_3 * 0.15)+ (pct_return_4 * 0.15) + (pct_return_5 * .2) ), \t pct_return_6) FROM temp_4; – user163129 2009-08-26 17:09:14

+0

在我发现的例子中,select语句或子查询完全包含在括号中。因此,在您的声明中,在“SELECT”之前放置一个开括号,在“FROM temp_4”之后放置一个开括号,希望这对您有用。子查询挑剔! – JYelton 2009-08-26 17:35:52

0

用途:

INSERT INTO temp_5 
    (date_value, pct_return_portfolio, pct_return_benchmark) 
SELECT date_value, 
     pct_return_1 * .25 + pct_return_2 * .25 + pct_return_3 * .15 + pct_return_4 * .15 + pct_return_5 * .2, 
     pct_return_6 
    FROM temp_4; 

数学顺序的操作确保括号/括号不是必需的。

相关问题