Исключить записи по значениям других записей с таким же значением - PullRequest
2 голосов
/ 07 мая 2019

Моя таблица выглядит следующим образом:

ID  type

12  1 
13  2
12  1
14  1
15  1
15  2
16  1
14  3

Идентификатор может повториться.Мне нужно взять все идентификаторы, которые имеют тип 1, но не имеют другой записи с типом <> 1, поэтому результат будет:

12
16

Каков будет правильный подход?

1 Ответ

1 голос
/ 07 мая 2019

Агрегирование может быть самым простым подходом:

SELECT ID
FROM yourTable
GROUP BY ID
HAVING MIN(type) = MAX(type) AND MIN(type) = 1;

Мы также можем попробовать подход самостоятельного объединения:

SELECT DISTINCT t1.ID
FROM yourTable t1
LEFT JOIN yourTable t2
    ON t1.ID = t2.ID AND
       t2.type <> 1
WHERE
    t1.type = 1 AND
    t2.ID IS NULL;

Демонстрация

Демонстрация предназначена для второго запроса самостоятельного объединения, но вы можете подключить первый запрос к той же демонстрации, чтобы попробовать это тоже.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...