我有一个 postgres 表 fetches
包含下面的列
id | status | company_id | created_at
-------------------------------------------
10 | success | 2773 | 2017-03-14
11 | error | 190 | 2017-03-02
12 | error | 303 | 2017-03-01
13 | error | 286 | 2017-02-16
14 | error | 2773 | 2016-12-05
我正在努力实现以下结果:
id | status | company_id | created_at
-------------------------------------------
11 | error | 190 | 2017-03-02
12 | error | 303 | 2017-03-01
13 | error | 286 | 2017-02-16
这是我试图应用的逻辑:
- 获取状态为
错误
的所有抓取。 - 如果结果包含任何
company_id
,最新的fetch
(由created_at
)是成功
然后跳过它来自最终结果集。 company_id = 2773
将被跳过,因为它的最新获取状态是success
请告知我如何以 SQL 方式完成此操作。
最佳答案
尝试外连接:
with succ as (select company_id from fetches where status = 'success')
select fetches.*
from fetches
left outer join succ on succ.company_id = fetches.company_id
where succ.company_id is null;
关于sql - 根据多列检查选择唯一记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42790699/