특정 열에 대해 다른 / 다중 값을 가진 레코드 만 선택하십시오.


11

아래는 회원 테이블의 예입니다. 이메일 필드에 여러 값이있는 레코드가 있습니다. 이메일 값이 여러 개인 레코드 만 선택하고 싶습니다.

회원 테이블

ID   LASTNAME    FIRSTNAME    EMAIL
567  Jones       Carol        carolj@gmail.com
567  Jones       Carol        caroljones@aol.com
678  Black       Ted          tedblack@gmail.com
908  Roberts     Cole         coleroberts@gmail.com
908  Roberts     Cole         coler@aol.com
908  Roberts     Cole         colerobersc@hotmail.com

결과는 다음과 같습니다.

567  Jones       Carol        carolj@gmail.com
567  Jones       Carol        caroljones@aol.com
908  Roberts     Cole         coleroberts@gmail.com
908  Roberts     Cole         coler@aol.com
908  Roberts     Cole         colerobersc@hotmail.com

이메일 주소에 대한 항목이 하나만 있기 때문에 Ted Black이 누락되었습니다.

멤버쉽 테이블에 열이 4 개 이상 있음을 명확히해야합니다. 전화 번호 및 주소 등에 대한 추가 열이 있습니다. 전화 번호 또는 주소가 두 개 이상인 회원에게는 여러 항목이있을 수 있습니다. 이메일 주소가 여러 개인 개인 만 캡처하고 싶습니다.

이것은 데이터베이스 정리의 일부이며 기본 키가 추가됩니다. 또한 일부 사람들은 동일한 이메일 주소로 여러 항목을 가질 수 있음을 분명히해야합니다. 이 단계에서는 이메일 주소가 동일한 여러 항목을 캡처하고 싶지 않지만 이메일 주소가 다른 여러 항목을 가진 사람 만 캡처하고 싶습니다.

답변:


8

당신은 다음과 같은 것을 할 수 있습니다 :

select distinct x.id, x.lastname, x.firstname, x.email
from t as x
join (
    select id
    from t
    group by id
    having count(distinct email) > 1
) as y
    on x.id = y.Id    

3
select x.* 
from member as x
where x.id IN

    (
    select id
    from member
    group by id
    having count(distinct email) > 1
    )
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.