2009-08-26 71 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; 

數學順序的操作確保括號/括號不是必需的。

相關問題