如何获取活动记录和非活动记录



我有样本数据集

ID   Name  Active 
1    Mii    0
1    Mii    1
2    Rii    0
2    Rii    1
3    Lii    0
4    Kii    0
4    Kii    1
5    Sii    0

如何获得其他ID的活动记录和非活动记录。

ID   Name  Active 
1    Mii    1
2    Rii    1
3    Lii    0
4    Kii    1
5    Sii    0

我把所有的数据都放入了两个临时表中,因为有很多连接

select  * from  tmp1  where  active  = 1  
UNION ALL
select  * from  tmp2  where  active  = 0 AND  
NOT  EXISTS  (SELECT  1  FROM  tmp1   WHERE  Active  = 1 )

有人能告诉我用MYSQL 写有更好的方法吗

假设active只能是01,聚合可能会有所帮助:

SELECT id,
name,
max(active) active
FROM elbat
GROUP BY id,
name;

若在active中存在具有idname的具有1的记录,则max(active)1,如1 > 0。否则,它是唯一的值0

使用分析函数:

select * from (
SELECT ID, NAME, RANK() OVER ( ORDER BY ACTIVE desc) AS RN
FROM TABLE1) a where rn = 1;

最新更新