在数据库中递归查询标志

时间:2012-08-31 17:36:20

标签: c# sql

我的Article层次结构,每个Article都有一个属性IsCommentable。这可以采用true,false或NULL值。如果它为NULL,则表示它继承基于其父级的值。文章可以递归嵌套,并且“深度”没有限制。

现在,我需要进行查询,从数据库中获取所有可评论的文章。有没有办法可以通过SQL查询加载这些?

1 个答案:

答案 0 :(得分:1)

假设您使用的是SQL Server,可以使用recursive CTE

进行操作
WITH cte (id, iscommentable) AS (
  SELECT id, iscommentable FROM Article WHERE iscommentable IS NOT NULL
  UNION ALL
  SELECT a1.id, a2.iscommentable FROM Article a1
  INNER JOIN cte a2 ON a1.parent=a2.id
  WHERE a1.iscommentable IS NULL
)
SELECT * FROM cte

SQL小提琴example