sql - 检索包含列组合的所有表名

标签 sql postgresql

有没有办法从包含两个或多个列的组合的数据库中选择所有表名:column1 AND column2? 我认为这不是正确的方法:

select table_name from information_schema.columns where column_name = 'column1';

最佳答案

尝试使用 CTE 包含 array aggregator 。接线员<@将寻找元素的精确组合。

WITH j AS (
  SELECT table_name, array_agg(column_name::TEXT) AS columns
  FROM information_schema.columns 
  GROUP BY table_name)
SELECT * FROM j
WHERE '{column1,column1}' <@ j.columns

示例:

WITH j AS (
  SELECT table_name, array_agg(column_name::TEXT) AS columns
  FROM information_schema.columns 
  GROUP BY table_name)
SELECT * FROM j
WHERE '{name,statement}' <@ j.columns;

       table_name       |                              columns                               
------------------------+--------------------------------------------------------------------
 pg_prepared_statements | {name,statement,prepare_time,parameter_types,from_sql}
 pg_cursors             | {name,statement,is_holdable,is_binary,is_scrollable,creation_time}
(2 Zeilen)

关于sql - 检索包含列组合的所有表名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51206448/

相关文章:

postgresql - Postgis 语法 PARALLEL 错误

sql - 如何在 Azure SQL 数据库中存储字典? ( swift )

java - 如何判断在 SQLite 数据库中创建的 TextView 是否被单击?

MySql:读取时间戳旁边的数据库表条目

sql - 在 PostgreSQL 中按空值对选择输出进行分组

sql - 如何知道某个时间戳是否存在于 postgres 表单元格中

MYSQL INSERT 或 UPDATE IF

mysql - 如何检查每个主键值是否在另一个表中被引用为外键

sql - Postgresql 按日期排序但随机

PostgreSQL 异构插入