Я пытаюсь получить полный список сокращений, которые используются в полях моей таблицы MySQL translations
. Это как элементы моей таблицы может выглядетьMySQL GROUP BY REGEXP
-english- -german-
to hit sb. | jmd. schlagen
so. stole my bike | jd. hat mein Fahrrad gestohlen
I am tall | ich bin gross
to see sb. | jmd. sehen
1, 2, 3, etc. | 1, 2, 3, usw.
tree | Baum
...
Использование запроса MySQL SELECT, SELECT english FROM translations WHERE english REGEXP '[a-zA-Z]{2,}[.]' GROUP BY english
я могу показать все строки, которые содержат abbriviation, т.е.
-english- -german-
to hit sb. | jmd. schlagen
so. stole my bike | jd. hat mein Fahrrad gestohlen
to see sb. | jmd. sehen
1, 2, 3, etc. | 1, 2, 3, usw.
...
Результаты сгруппированы, поэтому не отображаются две строки с идентичным содержимым поля english
. Несколько случаев аббревиатуры перечислены отдельно, однако, например, sb.
появляется дважды. Из-за большого количества строк в translations
(около десяти миллионов) существует слишком много вложений общих аббревиатур, таких как sb.
или sth.
, так что для создания списка различных сокращений становится невероятно трудоемким.
Мне интересно, есть ли способ группироваться по наличию шаблона REGEXP, как, например, SELECT english FROM translations WHERE english REGEXP '[a-zA-Z]{2,}[.]' GROUP BY english REGEXP '[a-zA-Z]{2,}[.]'
Мне нужно составить этот список только один раз, поэтому я работаю в phpMyAdmin.
Прекрасный пример для третьей нормальной формы. –
Исправьте ваш дизайн. Нормализовать до 3-го уровня, как предположил Майк Б., а затем ваша проблема по существу уходит. –