我有示例数据集
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编写
答案 0 :(得分:2)
假设active
只能是0
或1
,汇总可以提供帮助:
SELECT id,
name,
max(active) active
FROM elbat
GROUP BY id,
name;
max(active)
是1
,如果存在一个记录,其中id
和name
在1
中有一个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;