订购MySQL字符串结果而没有定义的排序规则?

Lat*_*tox 6 php mysql collation

说我有以下结果:

Mackay
Mackay Airport
Melbourne
Melbourne Airport
Sydney
Sydney Ac
Sydney Airport
Run Code Online (Sandbox Code Playgroud)

我怎么能这样做,所以他们订购机场始终在他们的顶部?按字母顺序,例如:

Mackay Airport
Mackay
Melbourne Airport
Melbourne
Sydney Airport
Sydney
Sydney Ac
Run Code Online (Sandbox Code Playgroud)

对如何使机场更加突出有点困惑.

a1e*_*x07 2

不确定以下查询是否涵盖所有情况,但它似乎适用于您的示例数据:

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
Run Code Online (Sandbox Code Playgroud)

有了桌子,它看起来像

select name
from table1 
ORDER BY SUBSTRING_INDEX(name,'Airport',1) ASC,
LOCATE('Airport',name) DESC
Run Code Online (Sandbox Code Playgroud)