繁体   English   中英

带有子查询的MySQL UPDATE为null

[英]MySQL UPDATE with subquery for null

我正在尝试使用子查询将所有飞机的状态更新为当前已退出且尚未返回的“OUT”。 我的外键是PLANE_NUM。 我正在尝试这样但我有一个错误:

UPDATE plane
SET STATUS='OUT'
WHERE PLANE_NUM 
IN (SELECT *
    FROM plane p, flight f
    WHERE p.PLANE_NUM = f.PLANE_NUM
    AND FLIGHT_RETURNDATE IS null);

更好的方法是加入as

update plane p
left join flight f
on p.PLANE_NUM = f.PLANE_NUM
SET p.STATUS='OUT'
where f.FLIGHT_RETURNDATE IS null ;

你面临的问题是因为==> MySQL不允许在FROM子句中引用一个以更新为目标的表,这可能令人沮丧。

这对你有用

UPDATE plane
SET STATUS='OUT'
WHERE PLANE_NUM 
IN (SELECT * FROM (select p.PLANE_NUM
    FROM plane p, flight f
    WHERE p.PLANE_NUM = f.PLANE_NUM
    AND FLIGHT_RETURNDATE IS null) as B );

没有优化。 请参阅以下链接并根据您的要求进行优化

您无法在FROM子句中指定要更新的目标表

http://www.xaprb.com/blog/2006/06/23/how-to-select-from-an-update-target-in-mysql/

试试这个吧。

UPDATE airplane, plane, flight
SET airplane.STATUS='OUT'
WHERE airplane.PLANE_NUM = plane.PLANE_NUM
    AND plane.PLANE_NUM = flight.PLANE_NUM
    AND flight.LIGHT_RETURNDATE IS null

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM