Выбор строк, в которых некоторые столбцы одинаковы, но другие отличаются

#sql #exists

Вопрос:

У меня есть набор данных, настроенный следующим образом:

Имя Возраст Работа Начать Конец
Джо 20 Сантехник 01/20 08/20
Джо 20 Столяр 08/20 09/21
Кевин 28 Сантехник 07/20 08/20
Кевин 28 Сантехник 08/20 09/21
Майкл 25 Сантехник 01/20 11/20
Майкл 25 Столяр 11/20 07/21

Я пытаюсь получить все строки, в которых имя и возраст совпадают, но работа отличается. Выходной набор данных должен выглядеть следующим образом:

Имя Возраст Работа Начать Конец
Джо 20 Сантехник 01/20 08/20
Джо 20 Столяр 08/20 09/21
Майкл 25 Сантехник 01/20 11/20
Майкл 25 Столяр 11/20 07/21

Может ли кто-нибудь мне помочь?

Ответ №1:

Вы можете проверить, есть ли пара дубликатов (имя, возраст) EXISTS , но с другой работой:

 SELECT * FROM t AS t1 WHERE EXISTS (  SELECT *  FROM t AS t2  WHERE t2.name = t1.name  AND t2.age = t1.age  AND t2.job lt;gt; t1.job )  

Комментарии:

1. Сработало отлично — спасибо!

Ответ №2:

 SELECT C.*  FROM YOUR_TABLE AS C  JOIN YOUR_TABLE AS C2 ON C.Name=C2.Name AND C.Age=C2.Age AND C.Joblt;gt;C2.Job  

Комментарии:

1. Вы правы, но ответы только на код, как правило, низкого качества, как для текущего пользователя, задающего вопрос, так и для будущих пользователей с аналогичными проблемами. Объяснение вашего решения добавляет значительную ценность вашему ответу. ( 1 в любом случае, просто за то, что я был прав.)