Виберіть лише ті записи, які мають різні / множинні значення для певного стовпця


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

Зауважте, що Теда Блек відсутній, оскільки у нього є лише один запис для електронної адреси.

Слід уточнити, що в моїй таблиці членства більше 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    

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.