2013-10-14 1 views
0

모든 행에 대해 도메인 접미사를 잘라내는 쿼리가 있습니다 (예 : google.com -> 구글이나 google.co.uk -> 두 번 이상 나타나는 수정 된 문자열 표시

SELECT id,domain, 
CASE 
WHEN LENGTH(domain) - LENGTH(REPLACE(domain, '.', '')) = 1 THEN REVERSE(SUBSTRING(REVERSE(domain), LOCATE('.', REVERSE(domain)) + 1, 1000)) 
WHEN LENGTH(domain) - LENGTH(REPLACE(domain, '.', '')) = 2 THEN REVERSE(SUBSTRING(REVERSE(REVERSE(SUBSTRING(REVERSE(domain), LOCATE('.', REVERSE(domain)) + 1, 1000))), LOCATE('.', REVERSE(REVERSE(SUBSTRING(REVERSE(domain), LOCATE('.', REVERSE(domain)) + 1, 1000)))) + 1, 1000)) 

END as Keydomain 
FROM sites 

지금 내가 두 번 이상 발생하는 모든 수정 도메인을 표시하려면 다음과 같이 쿼리는

구글. 어떻게해야합니까? 저를 도와 주셔서 감사합니다;)

+0

정직하게, 당신은 스크립트 : – Ashalynd

+0

=)와 같은 일을해야 잘, 나는 모든 SQL 또는 프로그래밍에 좋은 아니에요 인정해야 ... 난 몰라 내가 1. 스크립트를 작성할 수 있고 2. 스크립트를 다른 사람들에게 설명하여 스크립트를 사용할 수 있다고 생각하십시오. – user2857795

답변

0

그냥 쿼리에

GROUP BY Keydomain 
HAVING COUNT(*) > 1 

를 추가합니다.

편집 :

당신이 완전한 도메인 귀하의 추가와 함께 하나 하나 나열 할 수있는 방법이 있는지 말해 주시겠습니까?

SELECT * FROM 
(
SELECT 
CASE 
WHEN LENGTH(domain) - LENGTH(REPLACE(domain, '.', '')) = 1 THEN REVERSE(SUBSTRING(REVERSE(domain), LOCATE('.', REVERSE(domain)) + 1, 1000)) 
WHEN LENGTH(domain) - LENGTH(REPLACE(domain, '.', '')) = 2 THEN REVERSE(SUBSTRING(REVERSE(REVERSE(SUBSTRING(REVERSE(domain), LOCATE('.', REVERSE(domain)) + 1, 1000))), LOCATE('.', REVERSE(REVERSE(SUBSTRING(REVERSE(domain), LOCATE('.', REVERSE(domain)) + 1, 1000)))) + 1, 1000)) 
END as Keydomain 
FROM sites 
GROUP BY Keydomain 
HAVING COUNT(*) > 1 
) d1 
INNER JOIN 
(
SELECT id, domain, 
CASE 
WHEN LENGTH(domain) - LENGTH(REPLACE(domain, '.', '')) = 1 THEN REVERSE(SUBSTRING(REVERSE(domain), LOCATE('.', REVERSE(domain)) + 1, 1000)) 
WHEN LENGTH(domain) - LENGTH(REPLACE(domain, '.', '')) = 2 THEN REVERSE(SUBSTRING(REVERSE(REVERSE(SUBSTRING(REVERSE(domain), LOCATE('.', REVERSE(domain)) + 1, 1000))), LOCATE('.', REVERSE(REVERSE(SUBSTRING(REVERSE(domain), LOCATE('.', REVERSE(domain)) + 1, 1000)))) + 1, 1000)) 
END as Keydomain 
FROM sites 
) d2 
ON d1.Keydomain = d2.Keydomain 
+0

정말 쉬웠습니다! 감사. 추가로 전체 도메인을 하나씩 나열하는 방법이 있는지 말해 줄 수 있습니까? – user2857795

+0

@ user2857795 내 대답이 업데이트되었습니다. – fancyPants

관련 문제