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