开发者社区> 问答> 正文

Postgresql递归查询,使用ARRAY保存path,出现数组数据类型错误应如何解决?


查询截图如下:

C970741A_449F_41D6_81AF_AA704E3EFDBB


查询语句如下:

WITH RECURSIVE search_graph(
md5_wp_cur,
md5_wp_next,
depth,
path,
cycle
)AS(
    SELECT
    md5_wp_cur,
    (jsonb_array_elements(next_relation)->>'md5_wp_next')::varchar(32) as md5_wp_next,
    1,
    array[md5_wp_cur]::varchar[],
    false
    from word_relation
    WHERE
    md5_wp_cur='6ce159ccd6f0ab4d8de6d28004f0b3ed'

    UNION ALL

    SELECT
    g.md5_wp_cur,
    (jsonb_array_elements(g.next_relation)->>'md5_wp_next')::varchar(32) as md5_wp_next,
    sg.depth+1,
    (path || g.md5_wp_cur)::varchar[],
    g.md5_wp_cur=ANY(path)
    FROM word_relation AS g,search_graph AS sg
    WHERE
    g.md5_wp_cur=md5_wp_next
    AND NOT cycle
    AND sg.depth <=2
)
SELECT * FROM search_graph where depth>1 limit 300


表结构如下:

image

展开
收起
大椰子 2018-05-20 10:17:13 2605 0
1 条回答
写回答
取消 提交回答
  • 根据错误信息,是 varchar[] 没定义明确导致的吧,你试试都用
    )::varchar(32)[]

    2019-07-17 22:26:47
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
云栖大会:开源 PolarDB 架构演进、关键技术与社区建设 立即下载
2023云栖大会:和客户一起玩转PolarDB新特性 立即下载
2023云栖大会:PolarDB for AI 立即下载

相关镜像