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

时间:2020-08-15 03:05:10

标签: mysql sql

我有示例数据集

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

我已经将所有数据放入2个临时表中,因为那里有很多联接

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编写

2 个答案:

答案 0 :(得分:2)

假设active只能是01,汇总可以提供帮助:

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

max(active)1,如果存在一个记录,其中idname1中有一个active,例如{ {1}}。否则,它是唯一的值1 > 0

答案 1 :(得分:1)

使用分析功能:

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