2013-08-26 65 views

回答

3

修復它 - 酷似它是在你的錯誤信息顯示:

UPDATE `FlightSchedule` 
SET delay= 
(SELECT update_field 
FROM 
(
    SELECT MINUTE (ETA - STA) AS update_field 
    FROM `FlightSchedule` 
    WHERE `flightNum_arr`='3517' 
) AS internal_0 
) 
WHERE `flightNum_arr`='3517'; 

但實際上,上面有更正確的暗示 - 在所有擺脫嵌套子查詢(見戈登的答案)。

編輯(基於評論)

如果你想找到的差異,使用TIMEDIFF功能:

UPDATE `FlightSchedule` 
    SET delay = TIMEDIFF(ETA - STA) 
    WHERE `flightNum_arr`='3517'; 
+0

+1這樣一個很好的解釋,哈哈:) –

+0

@ØHankyPankyØ - 我認爲,如果人們將不只是看到錯誤消息,很多問題都將迎刃而解,但實際上_read_他們和**瞭解**:p –

+0

實際上,答案在語法上不正確,因爲第二個別名不是必需的,也不合適。 –

3

的問題是在嵌套子查詢。但你甚至不需要它。寫此查詢正確的做法是:

UPDATE `FlightSchedule` 
    SET delay = MINUTE(ETA - STA) 
    WHERE `flightNum_arr`='3517'; 
+0

您無法在FROM子句 –

+0

@KlausosKlausos中指定目標表'FlightSchedule'進行更新。 。 。對不起,這是我推理的一步。 –

+0

我需要使用MINUTE(ETA - STA)。你能告訴我如何在你的解決方案中使用它嗎? –

相關問題