Not sure if the following query covers all cases, but seems to work with your example data:
select name, SUBSTRING_INDEX(name,'Airport',1) as l, LOCATE('Airport',name) as r from ( select 'Sydney Airport' as name union all select 'Sydney' union all select 'Sydney Ac' union all select ' Mackay Airport' union all select 'Mackay' union all select 'Melbourne' union all select 'Melbourne Airport' )a order by l asc, r desc
with a table it will look like
select name from table1 ORDER BY SUBSTRING_INDEX(name,'Airport',1) ASC, LOCATE('Airport',name) DESC
source share