最近在做项目的时候有个需求是需要查到当前登录的用户下辖所有区域的数据,并将查询出来的部门信息以如下格式展示

最高人民法院>江苏省高级人民法院>南通市中级人民法院
最高人民法院>江苏省高级人民法院>连云港市中级人民法院

,于是用如下语句查询

WITH RECURSIVE T AS (
SELECT
c_id,
c_name
FROM
db_aty.t_aty_corp
WHERE
c_pid IS NULL
UNION ALL
SELECT
D.c_id,
T.c_name || '>' || D.c_name
FROM
db_aty.t_aty_corp D
JOIN T ON D.c_pid = T .c_id
) SELECT
c_id AS corpId,
c_name AS corpName
FROM
T

但是出现了如下错误

ERROR:  recursive query "t" column 2 has type character varying(150) in non-recursive term but type character varying overall

根据错误提示猜测这是因为在sql语句中使用union all 时  需要前后查询出的字段属性一致,而在进行查询时,使用t.c_name || '>' || D.c_name 时由于是拼接的字符串 所以字段属性与前面的

c_name不一致,所以导致报错,

解决办法:为拼接后的字符串指定字段格式

WITH RECURSIVE T  AS (
SELECT
c_id,
c_name::varchar(150) FROM
db_aty.t_aty_corp
WHERE
c_pid is null
UNION ALL
SELECT
D.c_id,
(T.c_name || '>' || D.c_name )::varchar(150) as c_name
FROM
db_aty.t_aty_corp D
JOIN T ON D.c_pid = T .c_id
)
SELECT c_id AS corpId ,c_name as corpName FROM T

得到正确答案如下

POSTGRESQL中ERROR: recursive query "t" column 2 has type character varying(150) in non-recursive term but type character varying overall的更多相关文章

  1. PostgreSQL中RECURSIVE递归查询使用总结

    RECURSIVE 前言 CTE or WITH 在WITH中使用数据修改语句 WITH使用注意事项 RECURSIVE 递归查询的过程 拆解下执行的过程 1.执行非递归部分 2.执行递归部分,如果是 ...

  2. 解决postgresql -- ERROR: 42601: query has no destination for result data

    I am learning Npgsql and PostgreSQL. I am unable to define the output parameter correctly. What am I ...

  3. [MySQL-1] mysql error 1101 blob/text column can't have a default value

    在MySQL Query Browser上创建一个含有TEXT类型的字段,创建不成功,报错:mysql error 1101 blob/text column can't have a default ...

  4. Mybatis使用-Error attempting to get column 'type' from result set. / '255' in column '4' is outside valid range for the datatype TINYINT.

    一.遇到的问题是这样的: [RemoteTestNG] detected TestNG version 6.9.10log4j: Parsing for [root] with value=[DEBU ...

  5. golang自己定义数据类型查询与插入postgresql中point数据

    golang自己定义数据类型查询与插入postgresql中point数据 详细代码例如以下: package main import ( "bytes" "databa ...

  6. PostgreSQL中的索引(一)

    引言 这一系列文章主要关注PostgreSQL中的索引. 可以从不同的角度考虑任何主题.我们将讨论那些使用DMBS的应用开发人员感兴趣的事项:有哪些可用的索引:为什么会有这么多不同的索引:以及如何使用 ...

  7. PostgreSQL中定时job执行(pgAgent)

    PostgreSQL中定时job执行 业务分析 近期项目需要定期清理数据库中的多余数据,即每月1号删除指定表中一年以上的数据. 初步分析这种定时job可以使用一下两种技术实现: Linux的cront ...

  8. PostgreSQL 中日期类型转换与变量使用及相关问题

    PostgreSQL中日期类型与字符串类型的转换方法 示例如下: postgres=# select current_date; date ------------ 2015-08-31 (1 row ...

  9. PostgreSQL 中定义自己需要的数据类型

    PostgreSQL解决某系数据库中的tinyint数据类型问题,创建自己需要的数据类型如下: CREATE DOMAIN tinyint AS smallint CONSTRAINT tinyint ...

随机推荐

  1. HDU2082母函数模板题

    找单词 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submis ...

  2. maven scope使用和理解

    在Maven的依赖管理中,经常会用到依赖的scope设置.这里整理下各种scope的使用场景和说明,以及在使用中的实践心得. scope的使用场景和说明 1.compile 编译范围,默认scope, ...

  3. Altium Designer重装后图标都变白板或都变一样的解决方法

    https://blog.csdn.net/qq_41995282/article/details/80372113

  4. java设计模式三种工厂模式简单介绍

    一.简单工厂模式 概述:简单工厂模式的创建意图就是,把对类的创建初始化全都交给一个工厂来执行,而用户不需要去关心创建的过程是什么样的,只用告诉工厂我想要什么就行了.而这种方法的缺点也很明显,违背了设计 ...

  5. k8s yaml说明

    k8s yaml # yaml格式的pod定义文件完整内容: apiVersion: v1       #必选,版本号,例如v1 kind: Pod       #必选,Pod metadata:   ...

  6. ubuntu 使用旧式Gnome风格的菜单

    sudo apt-add-repository ppa:diesch/testing sudo apt-get update sudo apt-get install classicmenu-indi ...

  7. mybatis-generator 自动生成查询Vo

    package com.witwicky.plugins; import org.mybatis.generator.api.GeneratedJavaFile; import org.mybatis ...

  8. dubbo+spring_maven 遇到的问题 Error creating bean with name '***': Instantiation of bean failed;

    Exception in thread "main" org.springframework.beans.factory.BeanCreationException: Error ...

  9. TCP断线重连

    struct sockaddr_in TempSadd; TempSadd.sin_family = AF_INET; TempSadd.sin_port = htons(m_ServerPort); ...

  10. window/linux composer安装/卸载

    packagist库:https://packagist.org/ window  安装 参考地址:https://www.kancloud.cn/thinkphp/composer/35668 1. ...