使用SQL查询重复删除相似但不相同的URL

时间:2014-09-25 15:38:45

标签: sql sql-server deduplication

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

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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