我想选择其中一列名称为 user_id 的所有表名。
在PostgreSQL中可以吗?
答案 0 :(得分:2)
试试这个:
select table_name
from information_schema.columns
where column_name = 'user_id'
应该可以正常工作。
答案 1 :(得分:1)
确保包含架构名称。没有它,你的表名可能不明确。甚至可能导致有害的混淆:
SELECT table_schema, table_name
FROM information_schema.columns
WHERE column_name = 'user_id';
只有在需要跨RDBMS可移植性时才能使用信息模式,这很少需要并且很少有效。我宁愿直接查询目录表。更快更短:
SELECT attrelid::regclass
FROM pg_attribute
WHERE attname = 'user_id';
确保您已连接到同一个数据库。