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

MySQL同表连接查询问题:PHP文件夹结构场景下的实现困惑

解决同表查询子文件夹的问题

嘿,我来帮你搞定这个查询问题!你之前的SQL逻辑有点绕,其实不用把两个条件硬凑在同一行里,咱们用两种简单的方法就能实现需求:

方法1:子查询(简单直接)

这种方式最直观,先通过uniq找到目标文件夹的id,再用这个id去筛选所有子文件夹:

SELECT label, parent_id 
FROM folders 
WHERE parent_id = (SELECT id FROM folders WHERE uniq = 'w2d4f6');

解释一下:

  • 括号里的子查询会先返回uniq='w2d4f6'对应的id(也就是1)
  • 外层查询就会找出所有parent_id等于这个值的记录,也就是dir 2那条数据

方法2:自连接(更灵活)

如果以后你需要同时获取父文件夹的信息,自连接会更方便。咱们把同一张表当成两个表来用,给它们起不同的别名:

SELECT child.label AS child_label, child.parent_id, parent.label AS parent_label
FROM folders AS parent
JOIN folders AS child ON child.parent_id = parent.id
WHERE parent.uniq = 'w2d4f6';

解释一下:

  • 把表分别命名为parent(父文件夹表)和child(子文件夹表)
  • 通过child.parent_id = parent.id关联父子关系
  • 过滤条件parent.uniq='w2d4f6'指定要查询哪个父文件夹的子项

小提示

如果以后需要查询所有层级的子文件夹(比如子文件夹的子文件夹,一直往下),可以用MySQL的递归CTE(Common Table Expression),不过当前需求用上面两种方法就完全足够啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 07:13:34