Я задавал аналогичный вопрос пару месяцев назад. Находится здесь: Запрос MySQL на основе строки
Проблема, с которой я сталкиваюсь, заключается в том, что это работает только в одном конкретном порядке, а в некоторых случаях работает слишком хорошо.
Вот фрагмент данных, которые отфильтровывает этот запрос (предназначены дубликаты, фактические данные):
- BELLMORE
- ATLANTIC BCH
- ATLANTIC BEACH
- E HILLS
- EAST HILLS
- EAST ROCKAWAY
- FAR ROCKAWAY
- FLORAL PARK
- FLORAL PARK
- HIGHLAND HEIGHTS
- N HIGHLAND HGTS
- NORTH HIGHLAND HEIGHTS
Единственный запрос, который помог в моем последнем вопросе ( Запрос MySQL на основе строки ) работал хорошо для одного экземпляра и не работал для другого экземпляра. Вот запрос:
select names from tablename group by substring_index(names," ",1)
Который возвращает:
- BELLMORE
- ATLANTIC BEACH
- EAST HILLS
- FAR ROCKAWAY
- FLORAL PARK
- HIGHLAND HEIGHTS
- N HIGHLAND HGTS
- NORTH HIGHLAND HEIGHTS
Проблема с этим в том, что, как вы можете видеть, он удалил город, которого не должен был иметь, потому что он использовал только первое слово для его группировки. Он удалил:
- EAST ROCKAWAY
Он был СГРУППИРОВАН ПО ВОСТОКУ.
Пока я продолжаю писать это, я чувствую, что это почти невозможно, потому что положение статического названия города по сравнению с переменными частями всегда меняется. Разве что можно сравнить определенное количество символов. Что далеко не безупречно. Если кто-то думает, что у него может быть какое-то понимание или он работал и достиг чего-то подобного, я буду признателен за отзыв и руководство. Конечным результатом будет:
- BELLMORE
- ATLANTIC BEACH
- EAST HILLS
- EAST ROCKAWAY
- FAR ROCKAWAY
- FLORAL PARK
- HIGHLAND HEIGHTS