Дедупликация похожих, но не идентичных URL с помощью SQL-запроса

У меня есть набор данных с тысячами URL-адресов, хранящихся в столбце под названием Website (тип VARCHAR) в таблице под названием WebsiteData, Существует много пар URL-адресов (хранящихся в отдельных строках), которые идентичны, за исключением того, что один начинается с wwwнапример, www.google.com а другой нет, например, google.com, Как бы я разработал запрос SQL, который идентифицирует эти псевдодубликаты и удаляет версию, которая не начинается с www?

2 ответа

Решение

Я получил 2 таблицы одна с URL, которые имеют www. и один без. Присоединяйтесь к ним вместе, добавив www. на URL без.

-- 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

Используя 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
Другие вопросы по тегам