Sql server 假设)。您需要退出条件,该条件将在某个点停止此循环,因为您没有任何退出条件,它将进入无限循环。。。。它是从两个子查询返回的一行。。。。为什么查询进入递归是我的问题检查我的更新答案。不管你会得到多少行,重要的是它会调用多少行。顺便说一句,如果你将MAXREC

Sql server 假设)。您需要退出条件,该条件将在某个点停止此循环,因为您没有任何退出条件,它将进入无限循环。。。。它是从两个子查询返回的一行。。。。为什么查询进入递归是我的问题检查我的更新答案。不管你会得到多少行,重要的是它会调用多少行。顺便说一句,如果你将MAXREC,sql-server,common-table-expression,Sql Server,Common Table Expression,假设)。您需要退出条件,该条件将在某个点停止此循环,因为您没有任何退出条件,它将进入无限循环。。。。它是从两个子查询返回的一行。。。。为什么查询进入递归是我的问题检查我的更新答案。不管你会得到多少行,重要的是它会调用多少行。顺便说一句,如果你将MAXRECURSION设置为0,我假设查询很有可能进入无限循环(取决于你的数据)。即使我添加选项(MAXRECURSION nn)查询仍然会得到相同的错误,我需要知道为什么这里有一个无限递归的可能性想象循环,它看起来是这样的:而(1){..}这就是查询的


假设)。您需要退出条件,该条件将在某个点停止此循环,因为您没有任何退出条件,它将进入无限循环。。。。它是从两个子查询返回的一行。。。。为什么查询进入递归是我的问题检查我的更新答案。不管你会得到多少行,重要的是它会调用多少行。顺便说一句,如果你将MAXRECURSION设置为0,我假设查询很有可能进入无限循环(取决于你的数据)。即使我添加
选项(MAXRECURSION nn)
查询仍然会得到相同的错误,我需要知道为什么这里有一个无限递归的可能性想象循环,它看起来是这样的:而(1){..}这就是查询的行为(这是我的假设)。您需要退出条件,该条件将在某个点停止此循环,因为您没有任何退出条件,所以它将进入无限循环。
WITH MyCTE
AS (
SELECT o.organizationid,
        organization AS organization 
FROM organization o
    INNER JOIN store s ON s.organizationid = o.organizationid
UNION ALL
SELECT store.storeid,
            CAST(storeNAme AS NVARCHAR(50)) AS storeNAme 
FROM store
    INNER JOIN MyCTE ON store.organizationid = MyCTE.organizationid)

    SELECT DISTINCT
            Organization
    FROM MyCTE
organizationid    |organization
--------------------------------
3                 | Org1
StoreId           |StoreName
--------------------------------
3                 | Warehouse1
...
from MyCTE
option (maxrecursion 0)
WITH MyCTE
     AS (
     SELECT o.organizationid,
            organization AS organization,
          1 lvl
     FROM organization o
          INNER JOIN store s ON s.organizationid = o.organizationid
     UNION ALL
     SELECT store.storeid,
            CAST(storeNAme AS NVARCHAR(50)) AS storeNAme,
          lvl+1
     FROM store
          INNER JOIN MyCTE ON store.organizationid = MyCTE.organizationid
     WHERE lvl<10
)
SELECT DISTINCT
    Organization
FROM MyCTE