проверить поле на 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 шт):

Автор решения: Alex R.

Чтобы проверить наличие записей необходимо использовать 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)
→ Ссылка