У меня есть следующая таблица в PostgreSQL 11.0
col1 col2 col3 col4
1 a a a
1 a a a_1
1 a a a_2
1 b b c
2 d d c
3 e d e
Я хотел бы отфильтровать приведенную выше таблицу так, чтобы, если col2 и col4 равны, должно быть выбрано только это совпадение, а две строки ниже исключены. Если col2 и col4 не равны, строки с col2 = col3 должны быть сохранены.
Желаемый результат:
col1 col2 col3 col4
1 a a a
1 b b c
2 d d c
3 e d e
Я пытаюсь выполнить следующий запрос, но пока безуспешно.
select * from table1
where col2=col4
union
select * from table1
where col2 != col4 and col2=col3
, но это будет включать строки, в которых уже есть совпадения, которые я хочу исключить из окончательного вывода.
1 a a a_1
1 a a a_2