PostgresSQL查询,用于匹配列上的子集



我有一个表,看起来像这样:

EventID |状态--------+------------

1 |开始
1 |处理
1 |结束
2 |开始

2 |处理
3 |开始

我如何写一个查询来获得尚未"结束"的EventId ?返回:

EventID

2

3

谢谢。

这里的技巧是使用子查询。您希望从主查询中过滤出eventid值的子查询。换句话说,你不想要select eventid from events where status='Ended'。您将使用not in关键字将此子查询链接到主查询。

首先让我们加载一些示例数据。

create table events(EventID numeric, Status varchar);
insert into events values(1, 'Starting');
insert into events values(1, 'Processing');
insert into events values(1, 'Ended');
insert into events values(2, 'Starting');
insert into events values(2, 'Processing');
insert into events values(3, 'Starting');
commit
select * from events;

eventid |---------+------------

1 | Starting
1 | Processing
1 | Ended
2 | Starting
2 | Processing
3 | Starting

(6行)

下面是你想要的带有子查询过滤器的查询。

select eventid from events where eventid not in (select eventid from events where status='Ended');

eventid


2
2
3

(3行)

最新更新