#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 в любом случае, просто за то, что я был прав.)