如何为带父级关联的成员表查询添加父级member_number字段
解决方案:自连接获取父级成员编号
你不需要用WITH RECURSIVE,因为你的需求只是获取直接父级的member_number,递归查询是用来处理多级嵌套(比如祖父、曾祖父这类层级)的场景,这里直接用自连接就能解决。
修改你的现有查询,只需要把members表再连接一次,关联子成员的member_parent_id和父成员的member_id,然后取出父级的member_number即可:
SELECT m.member_id, m.member_parent_id, m.member_number AS member_nbr, m.member_fname, m.member_name, m.member_note, parent.member_number AS parent_member_number -- 新增父级编号字段 FROM members m LEFT JOIN members parent ON m.member_parent_id = parent.member_id -- 自连接父级 LEFT JOIN .... other table -- 保留你原来的其他表连接 LEFT JOIN .... other table WHERE m.member_parent_id IS NOT NULL AND m.member_status = 1;
关键说明:
- 给主表和自连接的父表分别起别名
m和parent,避免字段名称冲突 - 通过
m.member_parent_id = parent.member_id关联子成员和其直接父成员 - 用
parent.member_number获取父级的编号,并重命名为parent_member_number方便识别
如果你的数据库要求字段名称严格匹配(比如你原查询里的member_id_parent其实是member_parent_id),注意调整字段名和你的表结构保持一致。
内容的提问来源于stack exchange,提问作者Marc DG
相关产品推荐
相关产品推荐

