我需要在 SELECT 语句中包含表名,以及一些列和表的唯一标识符。
我不知道是否可以从该表中的选择或某种唯一标识符中获取表名。
我怎样才能做到这一点?
感谢您的回复,但我以这种方式解决了这个问题(实际上太容易了)
select 'table1' as tableName, col1, col2 from anyTable;
您将需要查询数据库的系统目录以查找表的主键和所有唯一约束,然后选择最适合您需要的一个。您可以期望找到 0、1 或更多这样的约束。
对于 Oracle 数据库,您可以使用类似
select
c.constraint_name,
col.column_name
from
dba_constrants c,
dba_cons_columns col
where
c.table_name = 'YOURTABLE'
and c.constraint_type in ('P', 'U')
and c.constraint_name = col.constraint_name
order by
c.constraint_name,
col.position
对于 MySQL,您将以类似的方式查询 INFORMATION_SCHEMA.TABLE_CONSTRAINTS 和 INFORMATION_SCHEMA.KEY_COLUMN_USAGE 视图。
这将为您提供数据库中的所有表名,您可以根据需要对其进行调整
SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE='BASE TABLE'