gpt4 book ai didi

sql - 查找单表链中的最后一条记录 (SQL Server)

转载 作者:行者123 更新时间:2023-12-01 09:38:30 24 4
gpt4 key购买 nike

SQL Server 2005中得到这个表,用于维护合并操作的历史记录:

  • 列 FROM_ID (int)
  • 列 TO_ID (int)

  • 现在我需要一个将原始 FROM_ID 作为输入的查询,并返回最后一个可用的 TO_ID。

    所以例如:
  • ID 1 合并到 ID 2
  • 稍后,ID 2 合并到 ID 3
  • 稍后,ID 3 合并到 ID 4

  • 所以我试图组合的查询将作为输入(在我假设的 WHERE 子句中)ID 1,并且应该给我最后一个可用的 TO_ID 作为结果,在这种情况下为 4。

    我想我需要一些递归逻辑,但真的不知道如何开始。

    谢谢 !

    马修

    最佳答案

    使用 CTE 会起作用。

    测试脚本

    DECLARE @IDs TABLE (
    FromID INTEGER
    , ToID INTEGER
    )

    INSERT INTO @IDs
    SELECT 1, 2
    UNION ALL SELECT 2, 3
    UNION ALL SELECT 3, 4

    SQL 语句
    ;WITH q AS (
    SELECT FromID, ToID
    FROM @IDs
    UNION ALL
    SELECT q.FromID, u.ToID
    FROM q
    INNER JOIN @IDs u ON u.FromID = q.ToID
    )
    SELECT FromID, MAX(ToID)
    FROM q
    WHERE FromID = 1
    GROUP BY
    FromID

    关于sql - 查找单表链中的最后一条记录 (SQL Server),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3709615/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com