Как найти строки с повторяющимися символами в столбцах MySQL?
Есть таблица со столбцами word_1 и word_2.
Как вывести все записи, в которых первые четыре буквы первого слова будут совпадать друг с другом И первые две буквы второго слова будут совпадать друг с другом?
Хоть вы и не привели свой пример решения, могу дать подсказку, как решить.
Попробуйте в запросе пересечь таблицу саму с собой и сравнить подстроку world_1 первого псевдонима таблицы с подстрокой world_1 второго псевдонима этой же самой таблицы. Аналогично, с world_2. В заключение, чтобы выправить окончательный результат, нужно будет убрать результаты пересечения одноименных строк по world_1 и world_2.
Можно такой группировкой выловить все группы (с количеством больше 1),
а потом пересечь эту выборку с отсортированнной оригинальной таблицей по префиксам.
Так получим все группы с заданными условиями. Но сама постановка задачи не говорит что делать, если таких групп больше одной. Там парадокс в формулировке получается
Благодарю Вас за помощь. Но в вашем решении описывается округление для типа данных int, а что делать в моем случае - оба столбца имеют тип данных varchar. Насколько я понимаю, функция ROUND не имеет смысла по отношению к строчному типу данных.
Примерно так можно отсортировать список по совпадениям (замените только поля Surname и Name на ваши, ну и имя таблицы поменяйту):
select ps.Surname,ps.Name,ps2.Surname,ps2.Name from Persons ps left join Persons ps2 on ps2.Surname like concat(substring(ps.Surname,1,4),'%') and ps2.Name like concat(substring(ps.Name,1,2),'%') where ps.i<>ps2.i and ps.Surname<>'' and ps.Name<>'' order by ps.Surname,ps.Name,ps2.Surname,ps2.Name;
Только, если брать ваш пример, то будет 6 строк, т.к. 3 записи заджойнят по 2 записи.