【问题标题】:How to get Active Records along with Inactive Records如何获取活动记录和非活动记录
【发布时间】:2020-08-15 03:05:10
【问题描述】:

我有样本数据集

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

【问题讨论】:

  • 你的主键是什么?

标签: mysql sql


【解决方案1】:

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

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

max(active)1,如果在active 中有idname 的记录有1,则为1 > 0。否则为0,唯一值。

【讨论】:

  • 简单的我把它变得更复杂了..谢谢
【解决方案2】:

使用分析函数:

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

【讨论】:

    猜你喜欢
    • 2019-03-30
    • 1970-01-01
    • 2017-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-15
    • 2014-02-22
    相关资源
    最近更新 更多