[英]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 );
没有优化。 请参阅以下链接并根据您的要求进行优化
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.