rya*_*ins 9 t-sql sql-server while-loop sql-server-2008
在SQL服务器中
好吧,所以我正在使用一个数据库表,其中行可以有父行,然后可以拥有自己的父行.我需要选择根'row'.我不知道这样做的最好方法.
有一个名为ParentId的字段,它将行链接到具有该ID的行.当ParentId = 0时,它是根行.
这是我的查询:
SELECT Releases.Name,WorkLog.WorkLogId
FROM WorkLog,Releases
WHERE
Releases.ReleaseId = WorkLog.ReleaseId
and WorkLogDateTime >= @StartDate
and WorkLogDateTime <= @end
Run Code Online (Sandbox Code Playgroud)
我真的不需要子版本的版本名称,我只想要根版本名称,所以我想选择这样的While循环的结果:
WHILE (ParentReleaseId != 0)
BEGIN
@ReleaseId = ParentReleaseId
END
Select Release.Name
where Release.RealeaseId = @ReleaseId
Run Code Online (Sandbox Code Playgroud)
我知道语法很糟糕,但希望我能告诉你我想要实现的目标.
这是一个例子,可能有用:
此查询获取树的较低元素,并搜索父节点的父节点.就像我在我的表中有4级 - >类别7-> 5,5-> 3,3-> 1.如果我给它5它会找到1,因为这是三个中的最高级别.
(更改最后一个选择,你可以让所有的父母都在路上.)
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
Run Code Online (Sandbox Code Playgroud)