作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在 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/
我是一名优秀的程序员,十分优秀!