开发者

Query to get a Table Name based on its ID

I have a table (DB_TableInfo) in my DB like the following

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

this table represents all tables in my DB. What I wanna do is to write a query to select tables of Type 'R', get their Id and return the Name of开发者_运维问答 the table belonging to that Id (the TableName column is not available in the specified table)

Can anybody help me out?

I wanna write a query similar to this one!

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


From the mention of sys.objects and use of square brackets I assume you are on SQL Server.

You can use the object_name function.

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

Or join onto sys.tables

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

And to exclude empty tables

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
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜