微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

提取记录历史

如何解决提取记录历史

您可以使用递归公用表表达式(CTE)解决此问题:

DECLARE
   @RequestID int = 6;

WITH
   ReqCTE AS
      (
         SELECT
               RequestID,
               OldRequestID
            FROM
               Requests
            WHERE
               RequestID = @RequestID
         UNION ALL SELECT
               R.RequestID,
               R.OldRequestID
            FROM
               ReqCTE C
               INNER JOIN Requests R
                  ON R.RequestID = C.OldRequestID
      )
SELECT
      *
   FROM
      ReqCTE;

解决方法

我的桌子上有两列RequestIdOldRequestId

  • 如果我通过RequestId,它将检索我特定的记录。

  • 如果OldRequestId检索到的记录中的s不为null,则它也应携带旧的请求数据。

  • 它应该一直持续到直到OldRequestId为null。

有人可以帮助我为此要求编写最佳的SQL查询吗?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。