基于postgresql查询某个字段属于哪个表的说明

一、场景还原

前端小林问我,它从前端的返回的某些字段,想知道那个表有这个字段,它想操作这个表……

二、sql语句

SELECT *
FROM information_schema. COLUMNS
WHERE COLUMN_NAME = 'storename';

SELECT c.relname AS "表名",a.attname AS "字段名",c.oid
FROM pg_class c
LEFT JOIN pg_attribute a ON a.attrelid = c.oid
WHERE c.relname NOT LIKE 'pg_%'
-- AND c.relname = 'kx_store'
AND a.attname = 'storename';

补充:postgresql数据库查询所有字段详细信息,包括描述

把里边的public改成相应模式名(默认为public,可不改)

table_name改成对应表名称

SELECT AA.*,BB.DESC FROM
 (
SELECT
A.ORDINAL_POSITION AS COL_NUM,
A.COLUMN_NAME AS COL_NAME,
A.DATA_TYPE AS COL_TYPE,
A.CHARACTER_MAXIMUM_LENGTH AS COL_LEN,
A.NUMERIC_PRECISION AS COL_PREC,
A.DATETIME_PRECISION AS COL_TIME_PREC,
A.IS_NULLABLE AS COL_NULLABLE,
A.COLUMN_DEFAULT AS COL_DEFAULT
FROM INFORMATION_SCHEMA.COLUMNS A
WHERE A.TABLE_SCHEMA = 'public' AND A.TABLE_NAME = 'table_name'
 )
 AS AA LEFT JOIN
 (
SELECT
OBJSUBID,
DESCRIPTION AS DESC
FROM PG_DESCRIPTION
WHERE OBJOID =
(
 SELECT RELID FROM PG_STAT_ALL_TABLES WHERE SCHEMANAME = 'public' AND RELNAME = 'table_name'
)
 )
 AS BB ON AA.COL_NUM = BB.OBJSUBID ORDER BY AA.COL_NUM;

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。如有错误或未考虑完全的地方,望不吝赐教。

(0)

相关推荐

  • postgresql 实现查询出的数据为空,则设为0的操作

    我就废话不多说了~ select name,price from odoo_sale; select name,COALESCE(price, 0) from odoo_sale; 补充:postgresql查询某列的最大值时,对查询结果为空做默认为0的处理 实例如下: select coalesce(max(max_grade),0) from exam_grade where examinee_id = 12345 and exam_id = 1; 查询某个考生在某个指定试卷的最高分,如果没

  • 解决postgresql insert into select无法使用并行查询的问题

    本文信息基于PG13.1. 从PG9.6开始支持并行查询.PG11开始支持CREATE TABLE - AS.SELECT INTO以及CREATE MATERIALIZED VIEW的并行查询. 先说结论: 换用create table as 或者select into或者导入导出. 首先跟踪如下查询语句的执行计划: select count(*) from test t1,test1 t2 where t1.id = t2.id ; postgres=# explain analyze se

  • postgresql 补齐空值、自定义查询字段并赋值操作

    查询出的数据自定义url字段并赋值 select id,name,'/index/' url from table_name 补充:postgresql 判断是空的_postgresql 数字类型存空值或null值.字段查询处理 1.存储数字类型,包含Integer,Double等,拼接字符串时,数字类型的值拼接成以下 一个stqyghmj 为数据库字段名,第二个stqyghmj 是值变量 stqyghmj = cast(nullif(" + stqyghmj + ", null)AS

  • PostgreSQL 实现查询表字段信息SQL脚本

    查询格式: SELECT c.relname 表名称, A.attname AS 字段名称, col_description(A.attrelid,A.attnum) AS 注释, format_type ( A.atttypid, A.atttypmod ) AS 类型, CASE WHEN A.attnotnull='f' THEN '否' ELSE '是' END AS 是否必填, a.attnum 序号 FROM pg_class AS c, pg_attribute AS a WHER

  • 基于postgresql查询某个字段属于哪个表的说明

    一.场景还原 前端小林问我,它从前端的返回的某些字段,想知道那个表有这个字段,它想操作这个表-- 二.sql语句 SELECT * FROM information_schema. COLUMNS WHERE COLUMN_NAME = 'storename'; SELECT c.relname AS "表名",a.attname AS "字段名",c.oid FROM pg_class c LEFT JOIN pg_attribute a ON a.attreli

  • SQL Server查询某个字段在哪些表中存在

    一.查询SQL Server中所有的表 SQL语句: SELECT * FROM sys.tables name列表示所有的表名. 二.查询SQL Server中所有的列 SQL语句: SELECT * FROM sys.columns name列表示所有的字段名称. 两张表根据object_id进行关联 语法: select * from sys.tables tinner join sys.columns c on t.object_id=c.object and c.name='要查询的字

  • 基于JPA查询部分字段的相关事项

    JPA查询部分字段相关事项 JPA使用HQL查询部分字段出错 org.hibernate.hql.internal.ast.QuerySyntaxException: XXX is not mapped 解决 应该@Entity指定name名,name值为对应表名,同@Table的name值相同 使用HQL的注意 1.想要使用JPA查询部分信息,需要使用HQL 2.select需跟实体,可以是map(必须是小写,大写试了下报错),或者是将待查询的字段单独封装成一个实体,new 实体 3.查询的字

  • 基于postgreSql 常用查询小结

    1. 日期格式转化(参考) select beg_time, end_time, extract(epoch from to_timestamp(end_time,'yyyy-mm-dd-HH24-MI-SS-US'))-extract(epoch from to_timestamp(beg_time,'yyyy-mm-dd-HH24-MI-SS-US')) from cdb_all_iu_data where beg_time > '2017-09-21' 注:beg_time, end_ti

  • 利用Mybatis向PostgreSQL中插入并查询JSON字段

    目录 应用场景介绍 数据insert 数据select BATCH 批量插入 前言: 这里我使用的是TimescaleDB,加了一个时间戳字段,不过没差.关于PostgreSQL中Json数据类型的操作,可以参考官网. 应用场景介绍 将TCP发过来的数据包(通过消息队列发过来)解析出数据(一个数据包含有多帧,一帧中含有多条信息),并和本地规则表的格式对应起来.以JsonLineMsg实体类代表对应的一帧数据: package tsdb.entity; import lombok.AllArgsC

  • SQL重复记录查询 查询多个字段、多表查询、删除重复记录的方法

    SQL重复记录查询 1.查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断 select * from people where peopleId in (select peopleId from people group by peopleId having count(peopleId) > 1) 例二:  select * from testtable where numeber in (select number from people group by numbe

  • sqlserver给表添加新字段、给表和字段添加备注、更新备注及查询备注(sql语句)

    先给大家介绍下sqlserver给表添加新字段.给表和字段添加备注.更新备注及查询备注,代码如下所示: -- 添加新字段及字段备注的语法 USE MY_SlaughterProduct--数据库 ALTER TABLE MY_SP_PackagingWeight--表名 ADD FSummary--字段名 int--类型 default ((0)) --默认值 go --给字段添加注释 EXEC sp_addextendedproperty N'MS_Description', N'是否称重汇总

  • PostgreSQL教程(十五):系统表详解

    一.pg_class: 该系统表记录了数据表.索引(仍然需要参阅pg_index).序列.视图.复合类型和一些特殊关系类型的元数据.注意:不是所有字段对所有对象类型都有意义. 名字 类型 引用 描述 relname name   数据类型名字. relnamespace oid pg_namespace.oid 包含这个对象的名字空间(模式)的OI. reltype oid pg_type.oid 对应这个表的行类型的数据类型. relowner oid pg_authid.oid 对象的所有者

  • 基于PostgreSql 别名区分大小写的问题

    PostgreSql是区分大小写的 如果别名的大小不一致就会提示错误: SELECT * FROM ( SELECT cpi."product_item_id" "PRODUCT_ITEM_ID" FROM prd.up_product_item cpi ) a WHERE a.PRODUCT_ITEM_ID=1 一个很简单的子查询,但是会出错,虽然从语句上看大小写是一致的,但是内部查询中还是使用了小写.PostgreSql对于大写都需要加上双引号的,不然还是视作小

随机推荐