表
Member| Mum_Status
mem1 | active
mem2 | future
mem3 | active
mem3 | future
如何编写查询以获得上表中的输出
期望的输出:
Member| Status
mem1 | active
mem2 | future
mem3 | active
答案 0 :(得分:5)
做GROUP BY
。使用MIN
选择活动(如果可用),否则返回将来。
select member, min(status)
from tablename
group by member
只要没有引入其他状态类型,它就能很好地工作。
或者,NOT EXISTS
:
select member, status
from tablename t1
where status = 'active'
or NOT EXISTS (select * from tablename t2
where t2.member = t1.member
and t1.status = 'active')
如果某行处于活动状态,请将其返回。否则它具有future状态,如果同一成员的其他行没有活动状态,则返回它。