查询以根据其ID获取表名

时间:2010-10-12 11:33:59

标签: sql

我的数据库中有一个表(DB_TableInfo),如下所示

TableId         Type
859374678        R
579845658        B
478625849        R
741587469        E
.
.
.

此表表示我的数据库中的所有表。我想做的是写一个查询来选择类型'R'的表,获取他们的Id并返回属于该Id的表的名称(TableName列在指定的表中不可用)

有人可以帮帮我吗?

我想写一个与此类似的查询!

SELECT TableID = OBJECT_NAME FROM [DB_TableInfo] WHERE Type = 'R' 

1 个答案:

答案 0 :(得分:2)

从提到sys.objects并使用方括号,我假设您使用的是SQL Server。

您可以使用object_name功能。

SELECT OBJECT_NAME(TableID) /*Might match objects that aren't tables as well though*/
 FROM [DB_TableInfo] 
 WHERE Type = 'R' 

或加入sys.tables

SELECT T.name
 FROM [DB_TableInfo] D 
 join sys.tables T ON D.TableID = T.object_id
 WHERE D.Type = 'R' 

并排除空表

SELECT t.name
FROM DB_TableInfo d 
JOIN sys.tables t ON d.TableId = t.object_id
JOIN sys.dm_db_partition_stats ps ON ps.object_id = t.object_id
WHERE d.Type = 'R' and ps.index_id <= 1
GROUP BY d.TableId, t.name
HAVING SUM(ps.row_count) > 0