Дедупликация похожих, но не идентичных 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