my sql 을 사용 할 때 한 필드 에서 중복 되 지 않 는 기록 을 조회 해 야 합 니 다.my sql 은 distinct 라 는 키 워드 를 제공 하여 중복 기록 을 걸 러 내 고 한 줄 만 남 겨 두 지만 중복 되 지 않 는 항목 수 를 되 돌려 주 는 경우 가 많 습 니 다.기록 되 지 않 은 모든 값 을 되 돌려 주 는 것 이 아 닙 니 다.그 이 유 는 distinct 가 목표 필드 만 되 돌아 갈 수 있 고 다른 필드 로 돌아 갈 수 없 기 때 문 입 니 다.이 문 제 는 저 를 오랫동안 괴 롭 혔 습 니 다.distinct 로 해결 하지 못 하면 저 는 이중 순환 조회 로 만 해결 할 수 있 습 니 다.그러면 데이터 양 이 매우 많은 사이트 에 있어 효율 에 직접적인 영향 을 줄 것 입 니 다.그래서 저 는 이 문 제 를 연구 하 는 데 많은 시간 을 들 였 습 니 다.인터넷 에서 도 해결 방안 을 찾 지 못 했 습 니 다.그 동안 용 용 라 를 도와 주 었 는데 결국 우리 둘 다 답답 해 졌 습 니 다........................................다음은 먼저 예 를 들 어 보 겠 습 니 다. table id name 1 a 2 b 3 c 4 c 5 b 라 이브 러 리 구 조 는 대략 이렇다.이것 은 간단 한 예 일 뿐 실제 상황 은 훨씬 복잡 할 것 이다.예 를 들 어 name 이 중복 되 지 않 는 모든 데 이 터 를 한 문장 으로 조회 하려 면 distinct 를 사용 하여 중복 기록 을 제거 해 야 합 니 다.select distinct name from table 에서 얻 은 결 과 는: name a c.효과 가 있 는 것 같 습 니 다.그런데 제 가 원 하 는 것 은 id 값 입 니까?검색 어 를 바 꾸 세 요:select distinct name, id from table 결 과 는: id name 1 a 2 b 3 c 4 c 5 왜 효과 가 없어 요?역할 은 했 지만 그 는 두 필드 를 동시에 작 용 했 습 니 다.즉,id 와 name 이 똑 같 아야 만 제 외 됩 니 다.....................................................우 리 는 검색 어 를 다시 고 쳤 다.select id, distinct name from table 유 감 스 럽 지만 잘못된 정 보 를 제외 하고 아무것도 얻 을 수 없습니다.distinct 는 시작 에 두 어야 합 니 다.어디 조건 에 distinct 를 넣 을 수 없 을 정도 로 어렵 습 니까?네,그대로 잘못 을 갚 겠 습 니 다.귀 찮 죠?확실히 애 를 써 도 이 문 제 를 해결 하지 못 했다.어 쩔 수 없어,계속 사람 을 찾 아 물 어 봐.회사 의 JAVA 프로그래머 를 붙 잡 고 Oacle 에서 distinct 를 사용 하 는 것 을 보 여 준 후에 도 my sql 의 해결 방안 을 찾 지 못 했다.마지막 으로 퇴근 하기 전에 group 을 해 보라 고 제안 했다. by。 한참 동안 시도 해 봤 지만 안 되 었 습 니 다.마지막 으로 my sql 수첩 에서 용법 을 찾 았 습 니 다.groupconcat(distinct name)콤비네이션 그룹 by name 내 가 필요 로 하 는 기능,흥분,천우 나 도,빨리 해 봐.잘못 을 보고 하 다.우울 하 다mysql 수첩 도 나 를 못 살 게 굴 었 다.먼저 나 에 게 희망 을 주 었 다가 다시 나 를 실망 으로 몰 아 넣 었 다.정말 독 하 다...다시 한 번 자세히 살 펴 보면 groupconcat 함 수 는 4.1 지원,헐,나 4.0.어 쩔 수 없어,업그레이드,진급 1 시,성공...마침내 해결 되 었 다.그러나 이렇게 되면 고객 에 게 도 업 그 레이 드 를 요구 해 야 한다.갑자기 영기 가 번쩍,group 를 사용 할 수 있 으 니concat 함수,그럼 다른 함수 가 가능 합 니까?빨리 count 함수 로 해 봐,성공,나...울 고 싶 어,이렇게 많은 시간 을 들 였 는데......................................................원래 이렇게 간단 해...현재 전체 문 구 를 보 여 줍 니 다:select *, count(distinct name) from table group by name 결과: id name count(distinct name) 1 a 1 2 b 1 3 c 1 마지막 하 나 는 쓸데없는 것 이 니 상관 하지 않 으 면 된다.목적 달성...에이,원래 my sql 이 이렇게 멍청 하 다.가볍게 그 를 속 였 다.답답 함 은 나 뿐 이 야.(참,그리고 용 용 용 용 용 그 녀석)이제 꺼 내 서 이 문제 에 시 달리 지 않 았 으 면 좋 겠 어.읊다,읊조리다 by 반드시 order by 화해시키다 limit 전에,그렇지 않 으 면 잘못 보고 할 것 이다,많 지 않 을 것 이다,용량 을 사이트 에 보 내 면,나 는 계속 바쁘다.더 답답 한 일이 벌 어 졌 습 니 다.제출 을 준비 하 다 보 니 더 쉬 운 해결 방법 이 있 었 습 니 다................................................select id, name from table group by name my sql 에 대한 이해 가 너무 얕 은 것 같 습 니 다.농담 을 받 는 것 을 두려워 하지 않 고 똑 같은 실 수 를 하지 않도록 보 냅 니 다.by 솔.