首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于父记录的SQL Server查询更新子节点

问基于父记录的SQL Server查询更新子节点
EN

Stack Overflow用户
提问于 2017-06-06 13:11:19
回答 2查看 479关注 0票数 0

我正在尝试查询SQL Server表'tableA‘中具有列'node’(varchar)和'destination‘(位)的以下结构的数据。节点列中的数据基于上下级关系。子行: 1001111001将所有这些行/节点作为父行(100111100、10011110、1001111、100111、10011、1001、100、10、1)。我希望在sql server上的存储过程中完成以下操作。

1-检索子节点的所有父节点。

2-如果所有父目标都等于0,则更新子行的目标

EN

回答 2

Stack Overflow用户

发布于 2017-06-06 13:28:27

试试这个:

代码语言:javascript
复制
CREATE PROCEDURE UP_PROCEURENAME
@tablename varchar(30)
AS
BEGIN
 DECLARE @cnt INT = 1
 WHILE @cnt < len(destination)
 (select left(destination, len(destination)-@cnt) AS Parents from @tablename
 set @cnt = @cnt + 1)
 END LOOP
 GO
 IF(LEFT(destination,LEN(destination)-1) = 0)
   UPDATE @tablename
   SET destination =   ------YOUR UPDATE STATEMENT
END

EXEC UP_PROCEURENAME TableA
票数 0
EN

Stack Overflow用户

发布于 2017-06-06 13:54:57

代码语言:javascript
复制
SELECT ones.n + 10*tens.n + 100*hundreds.n + 1 AS Num,
    Left(@S, ones.n + 10*tens.n + 100*hundreds.n + 1) as ParentNode,
    t.Destination as ParentDestination
FROM (VALUES(0),(1),(2),(3),(4),(5),(6),(7),(8),(9)) ones(n),
         (VALUES(0),(1),(2),(3),(4),(5),(6),(7),(8),(9)) tens(n),
         (VALUES(0),(1),(2),(3),(4),(5),(6),(7),(8),(9)) hundreds(n),
         tableA t 
WHERE ones.n + 10*tens.n + 100*hundreds.n BETWEEN 0 AND Len(@s)-2 AND t.Node = Left(@S, ones.n + 10*tens.n + 100*hundreds.n + 1)
ORDER BY ones.n + 10*tens.n + 100*hundreds.n

至于更新,您现在可以检查所有父目的地的总和是否为0

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44381798

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档