复制
收藏
提问
全网

查询info表中orgde=1的数据,得到数据中的name、orgcode,根据这条数据中的orgcode,查询info表中par=orgcode的数据,得到数据中的name、orgcode,这个sql怎么写

4aecf6b55
1个月前
全网
文档
学术
百科
知识库
时间不限
自动
回答简洁
更专业一些
  • 首先查询info表中orgde=1的数据,然后根据得到的orgcode查询info表中par=orgcode的数据。

初始查询

  • 查询条件:orgde=1
  • 所需字段:name, orgcode

递归查询

  • 查询条件:par=初始查询得到的orgcode
  • 所需字段:name, orgcode
WITH RECURSIVE cte (name, orgcode) AS (
    SELECT name, orgcode
    FROM info
    WHERE orgde = 1
    UNION ALL
    SELECT i.name, i.orgcode
    FROM info i
    JOIN cte ON i.par = cte.orgcode
)
SELECT name, orgcode
FROM cte;
  • 该SQL语句首先使用WITH RECURSIVE定义了一个递归查询cte,初始查询选择orgde=1的记录,然后递归查询选择par字段等于cte中orgcode的记录,最终从cte中选择所有符合条件的name和orgcode。178

以上内容由AI搜集生成,仅供参考

在线客服