SQL 질문...

회원K   
   조회 5148   추천 0    

g4_member 테이블의 각 레코드에는 mb_nick 이 들어 있습니다.

mb_nick은 중복이 되면 안되는데

과거의 데이터에 중복된 닉네임이 들어 있었습니다.


원하는 SQL

g4_member 테이블에서, mb_nick의 count가 2 이상인 경우 mb_id 와 mb_nick, 중복갯수


sub query를 잘 안하다 보니, 머리가 멘붕에 빠졌습니다.

- to be continue -
짧은글 일수록 신중하게.
포올 2016-03
DB 종류는요?
     
회원K 2016-03
mysql 입니다.
쪽지 오류의 원인이 중복된 nick이 있는 회원인데, 몇분이나 그런것인지 찾아야 해서요.
인간김상수 2016-03
GROUP BY mb_nick
ORDER BY COUNT(*) DESC 로 중복되는 mb_id를 조회하고
살릴것을 추려야 할것 같은데요?
서브쿼리로 TOP 1만 빼고 날리는건 가능한지 모르겠고, 변수나 if else 같은걸 쓰면 한큐에 정리가 되겠냐만 더 큰멘붕에 빠질수 있으니, 일일이 추리셔야 할듯 합니다.

SELECT *
FROM g4_member AS member
    LEFT JOIN (
        SELECT
            mb_nick, COUNT(*) AS C
        FROM g4_member
        GROUP BY  mb_nick) AS CC ON member.mb_nick=CC.mb_nick
ORDER BY CC.C DESC
DB 에 부하를 좀 줘도 괜찮으면...
group by nick 으로 해서 nick 과 count 를 구한 테이블을 만들고 (서브쿼리(?)로 해도 됩니다)
member 테이블과 위의 테이블에서 nick 으로 조인을 건 다음...nick, id, count 를 표시하면 되지 않을까요?
자세히 생각해본 건 아니고...대충...감으로...핫핫~ ;;;
     
헛...댓글 다는 새에 쿼리까지 올려주신 분이 계시네요.
같은 방법입니다.
     
인간김상수 2016-03
저도...
천외천님과 같은방법입니다.
다만 천외천님께서 말씀하셨듯이 DB에 부하가 많이 갑니다. 프로그램에서 일상적으로 쓰일것 같으면 다른방법을 찾으심이 옳습니다.
크리미 2016-03
앗, 손 논지 오래돼서 문제 이해력이 바닥이네요. 딸기대장님 것을 약간 수정해서 쓰면 되겠네요 핫..
select a.mb_id, b.mb_nick, b.cnt
from g4_member a,
 ( select mb_nick, count(*) cnt
    from g4_member
    group by mb_nick
    having count(*) >= 2 ) b
where a.mb_nick = b.mb_nick
     
회원K 2016-03
+1
딸기대장 2016-03
select mb_id, mb_nick, cnt
from g4_member a,
 ( select mb_nick, count(*) cnt
    from g4_member
    group by mb_nick
    having count(*) > 2 ) b
where a.md_id = b.mb_id
  and cnt >= 2
회원K 2016-03
감사합니다.
문제가 되는 records 숫자(중복된 닉네임을 가진 회원수)가 3만 6천개이 넘네요.
프로그램으로 싹 정리해야 할 것 같습니다. -..-...
과거에 게시판 변경, DB 변환 등의 작업을 할 때, unique나 그런 것 없이 그냥 엎은 것 같아요.
에휴...
박문형 2016-03
찬찬히 하세요..

저런 작업은 한번 해버리면 다시 되돌리기 어렵기에..
문광화 2016-03
쪽지 기능이 아이디를 쫓아가는게 아니라 닉을 따라가는 것이었나요?
     
회원K 2016-03
쪽지기능이 id를 따라가게 하려면, id가 html 문서에 노출 되어야 합니다.
html 문서에 id가 노출되면 개인정보 유출의 이슈가 있어서
닉을 클릭하는 순간 ajax로 서버에서 sidevew를 만들어서 가져오게 해뒀습니다.
그래서 unique한 sideview의 정보가 nick을 따라가게 했는데
과거에 작업했었던 분들이 master 데이터의 clean을 하지 않아서 이런 이슈가 생기네요.
id에 연동되는 시리얼하지 않은 unique한 random 문자열을 이용하는 방법으로 변경을 고민하고 있습니다.


QnA
제목Page 2786/5699
2014-05   5102263   정은준1
2015-12   1638797   백메가
2018-06   5108   김건우
2006-01   5108   임현규
2007-07   5108   이병한
2005-11   5108   노형석
2019-08   5108   김건우
2016-10   5108   jpross
2016-09   5108   이준용
2015-07   5108   꾸비
2013-12   5108   김대원
2008-10   5108   강선중
2014-12   5108   김선동
2006-12   5109   민봉기
2005-09   5109   양재혁
2016-11   5109   그파
2007-01   5109   정태수
2016-11   5109   김건우
2015-12   5109   13579
2015-07   5109   ging
2015-10   5109   안태희
2013-03   5109   카프카