网上资源很乱,只在http://www.ej38.com/showinfo/mysql-192623.html找到了较为好的解决方案。
问题原述:
delete from `CT_FLIGHT_INFO` as C where C.flight_info_id in (SELECT B.flight_info_id FROM `CT_FLIGHT_INFO` as A,`CT_FLIGHT_INFO` as B WHERE A.flight_info_id < B.flight_info_id and A.flight_info_flight_no=B.flight_info_flight_no and A.`flight_info_airport_take_off` =B.`flight_info_airport_take_off` and A.`flight_info_airport_land`=B.`flight_info_airport_land`)
错误提示:You can't specify target table 'clients' for update in FROM clause
解决方法:创建临时表
改正:
delete from `CT_FLIGHT_INFO` where exists (select e.flight_info_id from (SELECT B.flight_info_id FROM `CT_FLIGHT_INFO` as A,`CT_FLIGHT_INFO` as B WHERE A.flight_info_id < B.flight_info_id and A.flight_info_flight_no=B.flight_info_flight_no and A.`flight_info_airport_take_off` =B.`flight_info_airport_take_off` and A.`flight_info_airport_land`=B.`flight_info_airport_land`) e where `CT_FLIGHT_INFO`.flight_info_id = e.flight_info_id )