mysql表的子查询或自连接查询,其工作方式类似于递归函数?

mysql表的子查询或自连接查询,其工作方式类似于递归函数?,mysql,sql,database,self-join,Mysql,Sql,Database,Self Join,我的数据表中有以下结构 现在,从上面的数据来看,如果我想找到所有子组织,其中组织Id是给定的,那么如何才能找到它 在这里,当组织Id=10707(主组织)时,我如何使其显示经销商A、经销商B、广告客户A、广告客户B 我的表名是organization_uu,还有 父组织ID 在描述该特定组织的父组织的每一行中 因此,当我给出主组织的id(比如10707)时,它应该返回具有该组织id的所有子组织。简言之,与其他RDMB(SQL Server、Oracle)不同,MySql不支持递归查询 本网站为

我的数据表中有以下结构

现在,从上面的数据来看,如果我想找到所有子组织,其中组织Id是给定的,那么如何才能找到它

在这里,当组织Id=10707(主组织)时,我如何使其显示经销商A、经销商B、广告客户A、广告客户B

我的表名是organization_uu,还有

父组织ID

在描述该特定组织的父组织的每一行中


因此,当我给出主组织的id(比如10707)时,它应该返回具有该组织id的所有子组织。

简言之,与其他RDMB(SQL Server、Oracle)不同,MySql不支持递归查询

本网站为您提供了两个关于该主题的有用链接:


分层数据有各种模型。看起来您在表中同时使用了“邻接列表”和“路径枚举”。您可以在Bill Karwin的幻灯片中了解到它们,该幻灯片讨论了MySQL中的各种模型和实现:

因此,使用
treePath
列,您需要的查询非常简单:

SELECT
    GROUP_CONCAT(t.name) AS SubOrganizations
FROM
    tableX AS t
  JOIN
    tableX AS p
      ON  t.treePath LIKE CONCAT( p.treePath, '%') 
      AND t.organizationId <> p.organizationId 
WHERE
    p.organizationId = 10707 ;
选择
作为子组织的集团(t.name)
从…起
表X AS t
参加
表X为p
关于t.treePath-LIKE-CONCAT(p.treePath,“%”)
和t.organizationId p.organizationId
哪里
p、 organizationId=10707;

请检查您的问题缺少很多细节此问题将不会以当前形式回答/现在可以吗?我已经编辑了我的问题
s/与其他问题不同/与真实问题不同
有人能给我举个例子吗..即使它可以通过自连接或其他方式完成,第一个链接的第一个链接也会导致它的给定空值…1行已获取但值为空nx.it有效..但是如果我想将根组织与子组织连接起来呢太好了?我想在一个查询中使用此查询作为子查询..所以我不想将其合并…你能告诉我吗?如果你不想对名称进行合并,只需
选择t.organizationId,t.name…
(不做任何更改)。如果你想将“主”组织与子组织合并,只需删除
和t.organizationId p.organizationId