You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何更新同表中跨行匹配Title与ParentLinkTitle的ParentLinkID

如何根据关联标题更新临时表的ParentLinkID列?

你需要实现的是通过匹配不同行的ParentLinkTitle和Title,来更新ParentLinkID列。这是典型的自连接更新场景,下面是具体的解决方案:

基础表结构与数据

首先是你提供的临时表创建和插入数据的代码:

CREATE TABLE #temp ( 
    LinkID INT, 
    Title NVARCHAR(100), 
    ParentLinkID INT, 
    ParentLinkTitle NVARCHAR(100) 
) 

INSERT INTO #temp ( LinkID , Title , ParentLinkID , ParentLinkTitle ) 
VALUES 
    ( 1 , N'Dashboard' , 0 , N'Ecommerce' ),
    ( 2 , N'User' , 0 , N'' ),
    ( 3 , N'Ecommerce' , 0 , N'User' ),
    ( 4 , N'Shipping' , 0 , N'Business' ),
    ( 5 , N'Product' , 0 , N'Dashboard' ),
    ( 6 , N'Business' , 0 , N'Product' );

SELECT * FROM #temp;

执行后基础表的结果:

LinkID  Title       ParentLinkID  ParentLinkTitle
1       Dashboard   0             Ecommerce
2       User        0             
3       Ecommerce   0             User
4       Shipping    0             Business
5       Product     0             Dashboard
6       Business    0             Product

更新SQL语句

使用自连接的UPDATE语句来匹配并更新ParentLinkID:

UPDATE t1
SET t1.ParentLinkID = t2.LinkID
FROM #temp t1
JOIN #temp t2 ON t1.ParentLinkTitle = t2.Title
WHERE t1.ParentLinkTitle <> ''; -- 排除空的ParentLinkTitle行,保持原0值

验证更新结果

执行更新后,查询表数据:

SELECT * FROM #temp;

得到的结果与你期望的一致:

LinkID  Title       ParentLinkID  ParentLinkTitle
1       Dashboard   3             Ecommerce
2       User        0             
3       Ecommerce   2             User
4       Shipping    6             Business
5       Product     1             Dashboard
6       Business    5             Product

逻辑说明

  • 我们将临时表#temp分别作为t1(需要更新的行)和t2(匹配的父行)进行自连接
  • 连接条件是t1.ParentLinkTitle = t2.Title,找到每个行对应的父行
  • 通过WHERE t1.ParentLinkTitle <> ''过滤掉没有父标题的行(比如LinkID=2的行),避免其ParentLinkID被错误更新
  • 最后将t1的ParentLinkID设置为匹配到的t2的LinkID

内容的提问来源于stack exchange,提问作者Sameer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 07:49:18