2011-11-15 3 views
2

my mysql 테이블의 행 아래에 채워진 모든 항목을 식별하고 선택하려고했습니다.모든 중복 항목을 식별하고 선택하는 방법

나는이 쿼리를 사용하여 시도했다 :

SELECT id, link, COUNT(*) 
FROM linkuri 
HAVING COUNT(*)>1 
LIMIT 0 , 30 

문제는 그 날 0 결과를 결과하고 내가 수동으로 실시 몇 페이지를 확인했고 나는 약간 dublicates 항목을 본 적이있다.

내가 원하는 것은 행 링크 아래에 채워진 모든 공개 된 항목을 확인하고 삭제하는 것입니다.

+0

여기서 group 문은 어디에 있습니까? – ILovePaperTowels

+0

@ILovePaperTowels 나에게 데모 쿼리를 입력 할 수 있습니까? – JustMarshal

+0

다른 그룹으로 그룹화해야합니다. 그렇지 않으면 각 행의 개수가 0 또는 1이되므로 아무 결과도 얻지 못할 것입니다. dev.mysql.com/doc/refman/5.0/en/ group-by-functions.htm – ILovePaperTowels

답변

1

당신은 아마 당신의 쿼리

SELECT a.id, a.link, b.cnt 
FROM linkuri 
INNER JOIN 
(SELECT link, COUNT(*) AS cnt FROM linkuri GROUP BY link HAVING COUNT(*) >1)b 
ON (b.link = a.link) 
+0

+1 이것은 내 것보다 더 완벽합니다. – ILovePaperTowels

1

문제에 대한 찾고있는 당신은 아무것도에 의해 그룹화하지 않을 것입니다. 중복 된 것을 찾으려면 열별로 그룹화 한 다음 각 그룹에서 개수를 가져와야합니다. 명령문이 그룹의 where 절과 같은 경우 http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html

SELECT id, link, COUNT(*) 
FROM linkuri 
GROUP BY link 
HAVING COUNT(*)>1 
LIMIT 0 , 30 
+0

좋은데, 나는 마녀 아이디를 보여주고 싶다. id1과 같이 공개 된 id1과 같이 dublicated에있다. id3로 공표 된 id3 id3로 공표된다. – JustMarshal

+0

그런 다음 @ a1ex07의 쿼리를 사용한다. – ILovePaperTowels

관련 문제