我的数据库中有一个表(DB_TableInfo),如下所示
TableId Type
859374678 R
579845658 B
478625849 R
741587469 E
.
.
.
Run Code Online (Sandbox Code Playgroud)
该表代表我的数据库中的所有表。我想要做的是编写一个查询来选择“R”类型的表,获取它们的 Id 并返回属于该 Id 的表的名称(TableName 列在指定的表中不可用)
有人可以帮我吗?
我想写一个与此类似的查询!
SELECT TableID = OBJECT_NAME FROM [DB_TableInfo] WHERE Type = 'R'
Run Code Online (Sandbox Code Playgroud)
从方括号的提及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'
Run Code Online (Sandbox Code Playgroud)
或者加入sys.tables
SELECT T.name
FROM [DB_TableInfo] D
join sys.tables T ON D.TableID = T.object_id
WHERE D.Type = 'R'
Run Code Online (Sandbox Code Playgroud)
并排除空表
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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14235 次 |
| 最近记录: |