У меня проблемы со следующими случаями:

  1. дубликат, кроме идентификатора (первичный ключ)
  2. все поля одинаковые, кроме id (первичный ключ) и finish_time

enter image description here

Мой вопрос в том, как удалить одну строку из 1-го результата, но также удалить строку с нулевым значением в поле finish_time. Окончательный ожидаемый результат представлен ниже: введите описание изображения здесь

Огромное спасибо заранее!

0
notentered 3 Янв 2018 в 06:01

2 ответа

Лучший ответ

Как это

    delete from t
    where id IN
    (select distinct on (task_id, date) t.id
    from t
    order by task_id, date, finish_time nulls last) as sub
1
lat long 3 Янв 2018 в 06:39

Вы можете сохранить одну строку, используя distinct on:

select distinct on (task_id, date) t.*
from t
order by task_id, date, finish_time nulls last;
2
Gordon Linoff 3 Янв 2018 в 03:03