'SUM(IF(children.status > 0, 1, 0)) AS count'
目前,我的 select 语句中包含上述代码,但它返回活跃 child 的数量,而不是拥有活跃 child 的 parent 数量。虽然我的数据很大一部分是单个 child 元素,但有些 parent 有大量 child ,这确实会搞乱计数。计算 child 状态高于 0 的 parent 数量的最佳方法是什么?
表格中的相关字段定义如下。
parent {
int id
}
children {
int id
int parent_id
int status
}
最佳答案
您需要一个 DISTINCT 来消除重复项。这是使用 CASE:
COUNT(DISTINCT CASE WHEN children.status > 0 THEN parent_id END)
您可能可以对 IF 执行相同的操作,但我更喜欢标准 SQL 的 CASE:
COUNT(DISTINCT IF(children.status > 0,parent_id, NULL))
关于mysql - SQL SUM 具有活跃 child 的 parent 数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30345199/