gpt4 book ai didi

sql-server - TSQL - Select 中的 While 循环?

转载 作者:行者123 更新时间:2023-12-02 11:20:51 25 4
gpt4 key购买 nike

在 SQL 服务器中

好的,所以我正在使用一个数据库表,其中的行可以有父行,然后父行可以有自己的父行。我需要选择根“行”。我不知道最好的方法。

有一个名为 ParentId 的字段,它将行链接到具有该 ID 的行。当ParentId = 0时,它是根行。

这是我现在的查询:

SELECT Releases.Name,WorkLog.WorkLogId 

FROM WorkLog,Releases
WHERE
Releases.ReleaseId = WorkLog.ReleaseId
and WorkLogDateTime >= @StartDate
and WorkLogDateTime <= @end
<小时/>

我真的不需要子版本的版本名称,我只需要根版本名称,所以我想选择像这样的 While 循环的结果:

WHILE (ParentReleaseId != 0)
BEGIN
@ReleaseId = ParentReleaseId
END

Select Release.Name
where Release.RealeaseId = @ReleaseId

我知道语法很糟糕,但希望我能让您了解我想要实现的目标。

最佳答案

这是一个可能有用的示例:

此查询获取树的较低元素,并向上搜索到父元素的父元素。就像我的表中有 4 个级别 -> 类别 7->5、5->3、3-> 1。如果我将其提供给 5,它将找到 1,因为这是三个级别中的最高级别。

(更改最后一个选择,您可以让所有 parent 都上路。)

DECLARE @ID int

SET @ID = 5;

WITH CTE_Table_1
(
ID,
Name,
ParentID
)
AS(
SELECT
ID,
Name,
ParentID
FROM Table_1
WHERE ID = @ID

UNION ALL

SELECT
T.ID,
T.Name,
T.ParentID
FROM Table_1 T
INNER JOIN CTE_Table_1 ON CTE_Table_1.ParentID = T.ID
)

SELECT * FROM CTE_Table_1 WHERE ParentID = 0

关于sql-server - TSQL - Select 中的 While 循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12110029/

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