這可能嗎?MySQL:具有ORDER BY COUNT的GROUP_CONCAT?
比方說,我有一個地址列表,有很多重複的條目。我需要過濾掉所有重複項,因爲有些地址名稱略有不同,但郵政編碼和電話號碼相同。
首先我對郵政編碼和電話進行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命令?
「地址」和「地點」會發生什麼?它們可能有不同的值,可能與返回的名稱無關。 –
那麼,我使用郵政編碼表檢查郵政編碼的地址/地點,所以它基本上是我需要過濾的名稱。 (在荷蘭,我們對每條街道都有不同的郵政編碼) – Dylan