내가 살고있는 단지에 거주하는 100 명이 넘는 소수의 MySQL 데이터베이스가 있습니다. 단순화하기 위해 단위 번호, 성, 이름, 전화 번호 및 이메일 주소가 포함됩니다. 이메일 주소는 질문과 관련이 없지만 같은 단위에서 같은 성을 가진 사람들이 다른 항목을 갖는 이유를 설명합니다.
다음은 몇 가지 샘플 데이터입니다.
UNIT,SURNAME,FIRST_NAME,PHONE
1,Evans,Bob,12345
2,Smith,Jane,23456
2,Smith,Jim,23456
3,Jones,Joe,45678
4,Jones,Jason,98765
5,Wong,Bill,95147
5,Lee,Jane,95147
위의 데이터를 요약하려면 :
동일한 전화 번호를 공유하는 동일한 성을 가진 두 사람을 지능적으로 인식하는 전화 목록 (성별로 정렬 됨)을 생성하는 선택 쿼리를 만들고 싶습니다 (동일한 단위 번호를 공유한다는 사실은 거의 가정하지만 실제 MySQL 쿼리와 관련이 없다고 생각) 결과에서 단일 행으로 결합하고 성이 다르지만 동일한 전화 번호를 가진 사람들은 분리됩니다. 즉, 위 데이터에 대한 선택 결과는 다음과 같습니다.
UNIT,SURNAME,FIRST_NAME,PHONE
1,Evans,Bob,12345
4,Jones,Jason,98765
3,Jones,Joe,45678
5,Lee,Jane,95147
2,Smith,Jane & Jim,23456
5,Wong,Bill,95147
일부 연구 는 내가 원하는 것을 거의 수행하는 다음 쿼리로 이어졌습니다.
SELECT unit, surname, phone,
group_concat(first_name order by first_name SEPARATOR ' & ') AS name
FROM owners
GROUP BY surname;
그러나 이는 Joe Jones의 전화 및 단위 번호 아래에 Joe Jones와 Jason Jones를 결합합니다.
3,Jones,Joe & Jason,45678
Joe Jones와 Jason Jones는 자신의 전화 번호가있는 별도의 항목을 유지하도록 쿼리를 구체화하고 싶습니다. 도움이되는 경우 각 행에 기본 키 "id"열이 있습니다.
어떤 제안이나 조언을 환영합니다. 매우 감사합니다.
크레이그
절에 unit
또는 phone
열을 추가하려고합니다 group by
.
예:
group by surname, unit
group by surname, phone
두 열을 모두 추가 할 수도 있습니다.
group by surname, unit, phone
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다