首页 > 解决方案 > sql条件至少有一个子项是状态成功

问题描述

数据库结构

示例 1 - 父母身份是InProgress

Parent -> id: 1 
Children: 
  id: 1 parentId: 1, status: 2 
  id: 2 parentId: 1, status: 1

示例 2 - 父母身份是Completed

Parent -> id: 2 
Children: 
  id: 1 parentId: 2, status: 2 
  id: 2 parentId: 2, status: 2

示例 3 - 父母身份为Pending

Parent -> id: 3 
Children: 
  id: 1 parentId: 3, status: 1 
  id: 2 parentId: 3, status: 1

children状态1pending,状态2success

我想列出所有的父母,他们total status都这样考虑他们的孩子

id   status
1   InProgress
2   Completed
3   Pending

标签: mysqlsql

解决方案


根据父 ID 聚合子表,看看你有什么。

select parentId
  case when max(status) = 1 then 'Pending'
       when min(status) = 2 then 'Completed'
                            else 'InProgress'
  end as status
from children
group by parentId

推荐阅读