Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 递归查询数据库中的标志_C#_Sql - Fatal编程技术网

C# 递归查询数据库中的标志

C# 递归查询数据库中的标志,c#,sql,C#,Sql,我有一个文章的层次结构,每个文章都有一个属性IsCommentable。这可以采用true、false或NULL值。如果为NULL,则表示它继承基于其父级的值。文章可以递归嵌套,“深度”没有限制 现在,我需要做一个查询,从数据库中获取所有可评论的文章。是否有任何方法可以通过SQL查询加载这些内容?假设您使用的是SQL Server,则可以使用SQL Server SQL FIDLE。您使用的是什么数据库?你有机会使用SQL Server(根据李玉秀的回答)或Oracle。我使用的是MySQL,我

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


现在,我需要做一个查询,从数据库中获取所有可评论的文章。是否有任何方法可以通过SQL查询加载这些内容?

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


SQL FIDLE。

您使用的是什么数据库?你有机会使用SQL Server(根据李玉秀的回答)或Oracle。我使用的是MySQL,我想它不支持这样的查询。我不是MySQL方面的专家,但如果不可能编写递归查询,你可以尝试做一个迭代计算的存储过程。但是,非常深的嵌套可能会影响性能。这是我的问题,深嵌套性能会受到很大影响,特别是如果查询可以多次被调用的话。
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