Предположим, у меня есть таблица, как этотгруппы по аналогичной строке
| id_grupo | nombre |
|:---------|----------------:|
| 1 | Emprendedores 1 |
| 2 | Emprendedores 2 |
| 3 | Emprendedoras 1 |
| 4 | Emprendedoras 2 |
| 5 | Los amigos 1 |
| 6 | Los amigos 2 |
| 7 | Los amigos no 1 |
Я хочу, чтобы сгруппировать по имени, которые равны, но заканчивается в различное число. Если вы посмотрите внимательно, есть имена, которые состоят из двух или более слов, однако разница - это окончание. Также есть имя, которое выглядит похоже, но они не такие же, как «Los amigos» и «Los amigos no», они принадлежат к разным группам, а также «Emprendsores» и «Emprendedoras» отличаются.
Это запрос, у меня есть:
SELECT *, GROUP_CONCAT(id_grupo)
FROM creabien_sacredi_dev.grupos
GROUP BY SUBSTRING(nombre,1,5)
Он отлично работает с большинством записей, однако проблема возникает со строками, как в примере, которые очень похожи. Я выбираю подстроку с 5 символами, но имена на самом деле не имеют одинаковой длины, поэтому некоторые строки работают не так, как ожидалось.
Как сгруппировать эти строки в следующей форме?
| id_grupo | nombre | GROUP_CONCAT(id_grupo) |
|:---------|----------------:|-----------------------:|
| 1 | Emprendedores 1 | 1,2 |
| 3 | Emprendedoras 1 | 3,4 |
| 5 | Los amigos 1 | 5,6 |
| 7 | Los amigos no 1 | 7 |
Я думаю, что ключ на последний номер предшествующей строка должна быть точно таким же, но я не знаю, как это сделать. Не могли бы вы мне помочь, пожалуйста?
Edit:
Есть также запись, как «Emprendedores» без какого-либо числа в конце, и это также должно быть сгруппировано с «Emprendedores 1» и «2» Emprendedores. Поэтому я думаю, что число больше не является ключевым, на самом деле я сомневаюсь, что существует способ группировать эти записи.
Они не то же самое длина - но требуемая длина всегда одна буква меньше фактической длины, правильно? – Strawberry
Да, вы правы. Я искал что-то вроде этого: Emprendsores 10, но там его не существует. Таким образом, на самом деле все записи имеют один символ, чем желаемая длина. –