UPDATE `FlightSchedule`
SET delay=(
SELECT *
FROM (
SELECT
MINUTE(ETA - STA)
FROM `FlightSchedule`
WHERE `flightNum_arr` = '3517'
)
)
WHERE `flightNum_arr` = '3517';
表示:
“每个派生表都必须有自己的别名”。
如何解决此问题?
答案 0 :(得分: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';
答案 1 :(得分:3)
问题出在嵌套子查询中。但你甚至不需要它。编写此查询的正确方法是:
UPDATE `FlightSchedule`
SET delay = MINUTE(ETA - STA)
WHERE `flightNum_arr`='3517';