【发布时间】:2011-10-29 09:12:29
【问题描述】:
这可能吗?
假设我有一个地址列表,其中包含很多重复条目。我需要过滤掉所有重复项,因为有些地址的名称略有不同,但邮政编码和电话号码相同。
首先我对邮政编码和电话进行 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 按名称出现的次数排序?
【问题讨论】:
-
address和place会发生什么?它们也可能有不同的值,可能与返回的名称无关。 -
嗯,我使用邮政编码表从邮政编码中检查地址/地点,所以它基本上是我需要过滤的名称。 (在荷兰,每条街道都有不同的邮政编码)
标签: mysql count sql-order-by group-concat