我有一个实体表,每个实体可以有不同的状态。为了保持历史记录,每个状态更改都由一个新行反映。例子:
Entity Id Status 123456 1 123456 2 789000 1
假设我想找到所有只有状态1的行(如果它们有其他状态,就不应该返回它们),我该怎么做呢?
afdcj2ne1#
此查询:
select entityid from tablename group by entityid having min(status) = 1 and max(status) = 1
返回所有 entityid 是你想要的,所以你可以和接线员一起使用 IN :
entityid
IN
select * from tablename where entityid in ( select entityid from tablename group by entityid having min(status) = 1 and max(status) = 1 )
yfwxisqw2#
只是使用 not exists :
not exists
select t.* from t where not exists (select 1 from t t2 where t2.entity_id = t.entity_id and t2.status <> 1 );
2条答案
按热度按时间afdcj2ne1#
此查询:
返回所有
entityid
是你想要的,所以你可以和接线员一起使用IN
:yfwxisqw2#
只是使用
not exists
: