通常我们在实际的项目中总会遇到通过子级的状态去更新父级的状态,如下所示,有六个子级数据分别从属于父级ID为568,591,593,且状态各不一样,求ID中状态只为1的数据,简而言之,求有且仅有状态为1的父级节点ID.
如图所示,要找到状态为1且只有1的数据,即只有591满足要求
这里用With比较简单,格式为With A(别名) as (Select * from 表B)
有且仅有则用到group,having
简写如下:
WITH IDSTATE AS
(
SELECT ID,STATE FROM IDSTATE
),
HAVEONLYSTATE AS
(
select min(ID) as ID,min(STATE) as STATE from IDSTATE
group by ID having count(ID)=1
)
SELECT * FROM HAVEONLYSTATE