在select语句中包含表名

时间:2013-06-24 16:07:46

标签: mysql sql oracle

我需要在SELECT语句中包含表名,以及一些列和表的唯一标识符。

我不知道是否可以从该表中的select或某种唯一标识符中获取表名。

我怎样才能做到这一点?

3 个答案:

答案 0 :(得分:1)

这将为您提供数据库中的所有表名,您可以根据需要进行调整

SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE='BASE TABLE'

答案 1 :(得分:1)

您需要查询数据库的系统目录以查找主键和表的所有唯一约束,然后选择最符合您需求的约束。您可以期望找到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视图。

答案 2 :(得分:1)

我感谢您的回复,但我以这种方式解决了这个问题(实际上太容易了)

select 'table1' as tableName, col1, col2 from anyTable;