SQL查询:在结果中添加“HasChild”列

时间:2014-05-17 23:21:29

标签: sql sql-server parent-child parent exists

我认为这是一个简单的问题,但答案正在躲避我。我有一个带有“父”列的表,该列与表中的其他记录相关。我要做的是在我的结果中有一个“HasChild”位列的select语句。所以,例如,如果我的表看起来像这样:

ID | ParentID 
1  | null
2  | 1
3  | 2
4  | null
5  | 4
6  | 1

然后我正在寻找一个返回这些结果的选择:

ID | ParentID | HasChild
1  | null     | true
2  | 1        | true
3  | 2        | false
4  | null     | true
5  | 4        | false
6  | 1        | false

与往常一样,非常感谢帮助。提前谢谢。

1 个答案:

答案 0 :(得分:1)

select
  x.ID,
  x.ParentId,
  case exists (select 'x' from YourTable y where y.ParentId = x.Id) then
    true
  else
    false
  end as HasParent
from
  YourTable x

也许你可以省略案例,但我不确定:

select
  x.ID,
  x.ParentId,
  exists (select 'x' from YourTable y where y.ParentId = x.Id) as HasParent
from
  YourTable x