sql – 选择count(*)或零

疲倦阻止我找到这个…说你有以下表格:

> PARENT_ID(长)

儿童

> CHILD_ID(长)
> PARENT_ID(长,FK)
> HAS_GRADUATED(BOOLEAN)

我想要一个查询返回以下true(1,在Oracle的情况下)如果父项至少有一个已经毕业的子项,并且假(如果是Oracle则为0)如果父项没有子项毕业了,或者根本没有孩子:

PARENT_ID…………….HAS_CHILDREN_WHO_GRADUATED

5……………………………1

3……………………………1

6……………………………0

2……………………………0

在上文中,parent_id = 5的父级可能具有> = 1个已毕业的子级.父母与parent_id = 3相同. parent_id = 6的父母要么根本没有孩子,要么有孩子,但没有孩子毕业.

对此的查询是什么样的?

最佳答案
使用:

   SELECT DISTINCT
          p.parent_id,
          CASE WHEN c.parent_id IS NULL THEN 0 ELSE 1 END
     FROM PARENT p
LEFT JOIN CHILD c ON c.parent_id = p.parent_id
                 AND c.has_graduated = 1

您必须使用外部联接才能查看子表中没有支持记录的父值.

转载注明原文:sql – 选择count(*)或零 - 代码日志