MySQL不会首先显示最短的结果

Yav*_*nov 1 mysql sql

我们有一个标准的MySQL 5.1数据库,其中有一个名为places的表.我们有两列,name和name_bg,其中name是地方的英文名称,name_bg是地方的保加利亚名称.

我们有两个以"РИМ"开头的地方."Рим"和"Римини".

+--------+--------+--------------+
| id     | name   | name_bg      |
+--------+--------+--------------+
| 221543 | Rimini | ??????       |
|  34514 | Rome   | ???          |
+--------+--------+--------------+
Run Code Online (Sandbox Code Playgroud)

当这样搜索时:

select id, name from places where name like '???%';
Run Code Online (Sandbox Code Playgroud)

或者像这样:

select id, name from places where name_bg like '???%';
Run Code Online (Sandbox Code Playgroud)

一切都很好看.

奇怪的是,这样搜索时(GROUP BY子句):

SELECT places.name, places.name_bg, places.country_id, countries.continent_id WHERE places.name LIKE '???%' OR places.name_bg LIKE '???%' ORDER ("CHAR_LENGTH(places.name), CHAR_LENGTH(places.name_bg), countries.continent_id, places.popular DESC") GROUP BY country_id LIMIT 10
Run Code Online (Sandbox Code Playgroud)

查询首先返回Римини而不是Рим.

我们在查询中尝试了订单和组,但没有任何帮助.

甚至切换了地点的ID,但发生了相同的结果.

我们希望首先得到卖空结果.

任何帮助都是适当的.

最好的,Yavor

Mar*_*ith 8

我不清楚为什么你期望它应该.长度功能是否满足您的需求?

SELECT id,
       name
FROM   places
WHERE  name_bg LIKE '???%'
        OR name LIKE '???%'
ORDER  BY Length(name)  
Run Code Online (Sandbox Code Playgroud)