在 select 语句中包含表名

3

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

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

我该如何实现这个功能?


1
如果您正在查询一个表格,那么您已经知道该表格的名称。您可以将其作为字符串添加... - Ben
2
请注意,如果您只使用了关系型数据库管理系统中的一个,可以将Oracle或MySQL从句子中删除。 - Ben
3个回答

2

感谢您的回复,但我通过以下方式解决了这个问题(实际上很容易)。

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

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视图。


0

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

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

1
那么这怎么回答唯一标识符的问题呢? - mustaccio
谢谢,但我想在执行该表中的选择时获取表的名称。 - Noah Martin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接