【发布时间】:2018-10-05 18:00:53
【问题描述】:
我有一个表,其 id 和 state 仅被写入,从未更新,我只想查询具有初始状态的 id,即只有第一行写入的 id 行,以便我可以处理它们用于状态更改。 如果处理正常,则会为这些 id 写入一个新状态,并且下次查询时,我不应该获得成功处理的 id 行。
示例:我有两行用于状态为“INITIAL”和“DONE”的 ID,另一行用于状态为“INITIAL”的第二个 ID。 当我查询时,我只想获得第二个 id。
我尝试过使用 group by,但由于我无法在不对其进行分组的情况下过滤状态,所以它没有按照我的预期工作。
我想出了这个查询,但这真的是如何解决的吗?
select id, state from states s1 where state = 'INITIAL' and not exists
(select 1 from states s2 where s2.state != 'INITIAL' and s2.id = s1.id);
顺便说一句,我正在使用 Postgres :)
我在这里发现了许多类似的问题,但不完全是这个,但是如果你知道的话,请指导我寻找另一个答案! :)
感谢您的帮助!
【问题讨论】:
标签: sql postgresql