Chỉ chọn những bản ghi có giá trị khác nhau / nhiều cho một cột cụ thể


11

Dưới đây là một ví dụ về bảng thành viên của tôi. Có một số hồ sơ có nhiều giá trị trong trường email. Tôi chỉ muốn chọn những hồ sơ có nhiều giá trị email:

Bảng thành viên

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

Tôi muốn kết quả là:

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

Lưu ý rằng Ted Black bị mất tích vì anh ta chỉ có một mục nhập cho địa chỉ email.

Tôi nên làm rõ rằng bảng thành viên của tôi có nhiều hơn 4 cột. Có các cột bổ sung cho điện thoại và địa chỉ, v.v. Và có thể có nhiều mục nhập cho một thành viên vì anh ấy / cô ấy có nhiều hơn một số điện thoại hoặc địa chỉ. Tôi chỉ muốn chụp những cá nhân có nhiều địa chỉ email.

Đây là một phần của việc dọn dẹp cơ sở dữ liệu và khóa chính sẽ được thêm vào. Tôi nên làm rõ thêm rằng một số người có thể có nhiều mục với cùng một địa chỉ email. Ở giai đoạn này, tôi không muốn chụp nhiều mục đó với cùng một địa chỉ email mà chỉ những người có nhiều mục có địa chỉ email khác nhau.

Câu trả lời:


8

Bạn có thể làm một cái gì đó như:

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
    )
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.