Для меня это был бы один запрос. У вас есть суб-выбор там, но это все еще один запрос, кажется.
озможно ?
Допустим, у меня есть список адресов, с множеством повторяющихся записей. Мне нужно отфильтровать все дубликаты, потому что некоторые адреса имеют несколько разные имена, но одинаковый почтовый индекс и номер телефона.
Сначала я делаю GROUP BY на почтовый индекс и телефон.
SELECT name, address, postalcode, place, phone
FROM addresses
GROUP BY postalcode, phone
Но потом я получаю случайные имена. Я хотел бы получитьЛучший имя, то есть имя с наибольшим количеством записей на почтовый индекс / телефон.
Поэтому я подумал о следующем. Здесь я использую функцию 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 для заказа по количеству раз, когда имя встречается?