如何选择'user_id'列所在的所有表名?

时间:2013-12-02 12:57:45

标签: sql postgresql

我想选择其中一列名称为 user_id 的所有表名。

在PostgreSQL中可以吗?

2 个答案:

答案 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';

确保您已连接到同一个数据库。