我有一个表,看起来像这样:
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行)