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

SQL自连接查询如何正确获取对应用户的父级用户名字段值

你当前使用的是隐式内连接的写法,只有A表的Parent字段能匹配到B表的ID时才会返回对应行,那些没有上级的根节点用户(Parent为0或空值)会被直接过滤,这就是你漏了部分结果的原因。

改用左连接保留所有A表的用户数据,对匹配不到上级的根节点做空值处理即可,修改后的SQL参考如下:

SELECT 
  A.UserName AS UserName,
  -- 根节点没有匹配的上级用户名时,显示为「无」,也可以根据需求改成NULL或者其他占位值
  COALESCE(B.UserName, '无') AS Parent
FROM test A
LEFT JOIN test B
  ON B.ID = A.Parent
  -- 如果你确实需要排除自己是自己上级的异常数据,可以保留下面这行条件
  AND A.UserName <> B.UserName

如果你的数据库不支持COALESCE函数,也可以换成对应数据库的空值处理函数:MySQL用IFNULL(B.UserName, '无'),SQL Server用ISNULL(B.UserName, '无')即可。


内容的提问来源于stack exchange,提问作者Mochamad Faishal Amir

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 08:18:03