Возможно ли это?
Допустим, у меня есть список адресов с множеством повторяющихся записей. Мне нужно отфильтровать все дубликаты, потому что некоторые адреса имеют несколько разные имена, но одинаковый почтовый индекс и номер телефона.
Сначала я делаю GROUP BY по почтовому индексу и телефону.
SELECT name, address, postalcode, place, phone
FROM addresses
GROUP BY postalcode, phone
Но тогда я получаю случайные имена. Я хотел бы получить имя best , то есть имя с наибольшим количеством записей на один почтовый индекс / телефон.
Так что я подумал о следующем. Здесь я использую функцию SUBSTRING_INDEX, чтобы получить только первый элемент в group_concat (в нем нет имен со строкой '~~'):
SELECT SUBSTRING_INDEX(
GROUP_CONCAT(DISTINCT name ORDER BY COUNT(name) DESC SEPARATOR '~~')
, '~~', 1),
address,
postalcode,
place,
phone
FROM addresses
GROUP BY postalcode, telephone
но я получаю «недопустимое использование групповой функции».
Как мне получить GROUP_CONCAT для заказа по количеству повторений имени?