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

如何从含LinkedID的人员表中查询并合并关联人员为单条记录?

当然可以实现这个需求!

你的问题本质是要把双向关联(LinkedID互相指向)的人员记录归为同一组,并且每组只保留一条记录(比如示例里保留ID更小的那条)。针对这种一对一双向关联的场景,我们可以用简单的自连接查询来实现:

SELECT t1.*
FROM your_table t1
LEFT JOIN your_table t2 ON t1.LinkedID = t2.ID
WHERE 
    -- 没有关联关系的记录直接保留
    t1.LinkedID IS NULL
    -- 对于有双向关联的组,只保留ID更小的那条记录
    OR t1.ID < t2.ID;

逻辑解释:

  • 左连接t2表是为了找到当前记录t1对应的关联记录;
  • 条件t1.LinkedID IS NULL会直接保留像Mary Sue这种没有任何关联的人员;
  • 条件t1.ID < t2.ID会在互为关联的记录中(比如John和Jane,Joe和Janet),只保留ID更小的那条,这样就实现了“把相互关联的视为同一个个体”的需求,最终得到你想要的结果集。

如果你的场景中存在更复杂的关联链(比如A关联B,B关联C这种链式关联),那可能需要用递归CTE来找出每个记录的根节点,但从你给出的示例来看,上面的SQL已经完全满足需求啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:19:26