Найти строки в таблице, содержащие одно значение, но не содержащие другое

У меня есть таблица, которая содержит идентификаторы с различными дельтами в виде отдельных строк. Таким образом, id может иметь дельту 0 или дельту 1 или обе дельты 0 и 1. Я пытаюсь найти те идентификаторы, которые имеют delta 0, но не delta 1.

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

пример:

dataset

id|delta
1 | 0
1 | 1
2 | 0
3 | 0
4 | 1
5 | 1

ожидаемый результат:

ids 4,5

запрос

select m.id from table m where m.delta=0 and m.id in (LIST OF IDS FROM ANOTHER QUERY)

и

select n.id from table n where n.delta=1 and n.id in (LIST OF IDS FROM ANOTHER QUERY)

1 ответ