2014-11-03 40 views
1

我試圖消除mysql數據庫表中的重複域名(URL)。Mysql查詢找到附近的複製URL

我用這個查詢找到「相同」的網址:

SELECT URL, 
COUNT(*) c 
FROM Links 
GROUP BY URL 
HAVING c > 1; 

但此查詢無法找到相同的域不同的URL這正是我需要的:

example.com 
www.example.com 
www.example.com/ 
www.example.com/somepage.htm 

任何幫助非常感謝。

回答

1

你可以很容易地處理最後三種情況:

select min(url), count(*) as c 
from links 
group by substring_index(url, '/', 1) 
having c > 1; 

爲了得到第一個,我會建議在字符串的開頭移除www.。以下應工作(儘管如果第一/之前在後面的URL發生.www它會失敗):

select min(url), count(*) as c 
from links 
group by (case when url like 'www.%' then substring(substring_index(url, '/', 1), 5) 
       else substring_index(url, '/', 1) 
      end) 
having c > 1; 
+0

其返回很多值的這一個網址:09-car-example.com – 2014-11-03 22:40:28

+0

@JamieGallicchio。 。 。傑米,這個答案遵循你在你​​的問題中指定的規則。如果你的例子真的更復雜,我建議你用更詳細的例子問另一個問題。如果你編輯這個問題,你會使我的答案無效,而這個答案可以畫出點贊。 – 2014-11-03 22:45:13

+0

實際上你的回覆沒有返回相同的域名。理論上它看起來應該起作用,但它不能返回任何類似的域。它實際上將它們全部分成兩組。它甚至不會過濾掉相同的域名,其中一個以/結尾,另一個僅在域擴展名中。唯一可能影響到這一點的是,所有的URL都以數據庫中的http://開頭。謝謝你的嘗試。 – 2014-11-04 00:03:16