首页 > 解决方案 > SQL递归获取下一个算法无法正常工作

问题描述

试图在存储过程中创建一个获取下一个递归算法。然而,我遇到了一些困难。条件部分有时可能会选择多个结果 - 如果是这种情况,我希望它继续寻找没有任何结果的案例,以便选择我可用的下一个号码。我尝试使用前 1 个,存在子查询等 - 其中大多数不能在递归内部使用。

以下是用于说明目的的示例代码:

declare @inputAccID int,
        @accDtlID  int

WITH cte_table AS (
    SELECT       
       number   ,
     accc_id as id
    FROM       
        Account
    WHERE acc_id = @inputAccID
    UNION ALL
    SELECT 
        cte.number +1
    FROM cte_table cte
     join
        AccountDetails ad on cte.id = a.acc_id
        join Account a on a.acc_id = ad.acc_id
        Where ad.accDtl_id != @accDtlID 
          and ad.number = ad.number
)
SELECT * FROM cte_table;
Options(maxrecursion 0)

基本上,当数据库中没有具有相同编号的其他记录时,我想获得下一个编号,因此它将在数据库中是唯一的。然而,目前在数据库中存在条件返回多条记录的情况 - 似乎是坏数据。这打破了递归

任何技术只能检查它是否存在记录?

标签: sqlsql-servertsqlcommon-table-expressionrecursive-query

解决方案


推荐阅读