places라는 테이블이있는 표준 MySQL 5.1 데이터베이스가 있습니다. name과 name_bg라는 두 개의 열이 있습니다. 여기서 name은 장소의 영어 이름이고 name_bg는 장소의 불가리아 이름입니다.MySQL은 가장 짧은 결과를 먼저 표시하지 않습니다.
우리는 "РИМ"로 시작하는 두 개의 장소가 있습니다. "Рим"및 "Римини".
+--------+--------+--------------+
| id | name | name_bg |
+--------+--------+--------------+
| 221543 | Rimini | Римини |
| 34514 | Rome | Рим |
+--------+--------+--------------+
은 다음과 같이 검색 할 때 :
select id, name from places where name like 'рим%';
또는이 같은 :
select id, name from places where name_bg like 'рим%';
모든 것이 잘 보인다. (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
쿼리 Рим 대신 처음 Римини를 반환합니다.
우리는 질의에 대한 순서와 그룹을 시도했지만 아무런 도움이되지 않았습니다.
장소의 ID를 전환했지만 동일한 결과가 발생했습니다.
우리는 먼저 단락 결과를 원합니다.
도움이 필요합니다. 당신이해야 기대하는 이유
최저
, 보르는
왜 'name_bg'로 필터링하고 선택하지 않습니까? 이게 맞습니까? –
전체 텍스트 검색을 고려해 보셨습니까? – shantanuo