这可能吗 ?
假设我有一个地址列表,其中有很多重复的条目。我需要过滤掉所有重复项,因为有些地址的名称略有不同,但邮政编码和电话号码相同。
首先,我对邮政编码和电话进行 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 按名称出现的次数排序?