проверить поле на null и выполнить distinct
Здравстуйте, не могу cообразить, как правильно написать запрос.
Вот моя таблица "object":
и данные в ней
Я хочу сделать distinct по полю object_id при условии, что у меня все value is not null у поля с таким же object_id.
т.е., если у всех 6 строк, которые показаны на скрине object_id = 505 и value is not null, то мне выводится одна строка с object_id, а если хотя бы у одной строки value равен null, то ничего не выводится. Как то так, использую postgreSQL
Ответы (1 шт):
Чтобы проверить наличие записей необходимо использовать EXISTS. Предикат EXISTS принимает значение TRUE, если подзапрос содержит любое количество строк, иначе его значение равно FALSE. Для NOT EXISTS все наоборот. Этот предикат никогда не принимает значение UNKNOWN/NULL.
select distinct
o.object_id
from object o
where not exists
(select
null
from object t
where t.object_id = o.object_id
and t.value is null)
