2014-09-25 8 views
0

WebsiteData이라는 테이블에 Website (VARCHAR 유형) 열에 저장된 수천 개의 URL이있는 데이터 세트가 있습니다. www으로 시작하는 것을 제외하고는 동일한 URL 쌍 (별도의 행에 저장 됨)이 여러 개 있습니다. www.google.com이고 다른 하나는 예를 들어 google.com이 아닙니다. 이 의사 복제본을 식별하고 www으로 시작하지 않는 버전을 삭제하는 SQL 쿼리는 어떻게 디자인합니까?비슷하지만 동일하지 않은 URL과 SQL 쿼리 중복 제거

+3

URL이 중복되지 않아야한다는 것을 알고 있어야합니다. – Lamak

+0

자세히 설명해 주시겠습니까? – zgall1

+1

글쎄, 단지 * common *'www.someurl.com'이'someurl.com '에게 지시하기 때문에 이것이 항상 항상 그렇다는 것을 의미하지는 않는다. – Lamak

답변

1

www.이없는 URL과 2 개의 테이블을 유도했습니다. 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 
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