2014-09-25 87 views
0

我有一个数据集,其中有一个名为WebsiteData的表中存储了名为Website(类型VARCHAR)的列中的数千个网址。有许多对URL(存储在单独的行中)是相同的,除了一个以www开始,例如, www.google.com,另一个不是,例如google.com。我将如何设计一个标识这些伪重复项的SQL查询并删除不以www开头的版本?使用SQL查询去除相似但不相同的URL

+3

你应该知道这些不一定是重复的URL – Lamak 2014-09-25 15:40:31

+0

你能否详细说明一下? – zgall1 2014-09-25 15:51:01

+1

好吧,只是因为*通常*'www.someurl.com'指向'someurl.com',这并不意味着在所有的 – Lamak 2014-09-25 15:53:06

回答

1

我衍生2代表一个与具有www.和一个没有网址。通过添加www将它们加入在一起。到没有的网站。

-- SELECT first to review the records. 
select * 
from 
(select * from website where url not like 'www.%') wA 
join 
(select * from website where url like 'www.%') wB 
    on 'www.' + wa.url = wb.url 


delete wA 
from 
(select * from website where url not like 'www.%') wA 
join 
(select * from website where url like 'www.%') wB 
    on 'www.' + wa.url = wb.url 
0

使用SUBSTRING首先获取网站部分。并与任何重复条目匹配并删除它。

DELETE tableW 
FROM tableW W 
JOIN 
(
select W1.website 
FROM tableW W1 
inner join tableW W2 
on W1.website = SUBSTRING(W2.website,CHARINDEX('.',W2.website, 0)+1, LEN(w2.website)) 
) T 
on T.website = W.website 
相关问题