【发布时间】:2019-07-04 15:44:11
【问题描述】:
我有一个数据库,其中包含一个名为 [Table] 的表,其中列出了该数据库中的所有表。现在我想使用一些 JOINS 编写一个 SQL 查询,它从子查询中的 [Table] 获取特定的表名以从该表中进行选择...我希望这不会太混乱。
所以 [Table] 看起来像这样:
IdTable Tablename
1 Adress
2 Project
3 User
...
查询应如下所示:
SELECT * FROM (SELECT Type FROM dbo.[Table] WHERE tablename = 12)
这样的事情可能吗?
我知道,子查询是可能的,但在这种情况下我不知道该怎么做。
提前致谢。
问候 拉尔斯
【问题讨论】:
-
您必须使用“动态 sql”来实现这一点。
-
一开始为什么要写这样的东西?您尝试解决的实际问题是什么? SQL 查询中的表类似于强类型语言中的类型。您不能只通过传递不同的字符串来更改它们。另一方面,使用 正确 表从客户端发送查询是微不足道的。创建查询特定表的视图也很容易。此外,将数字映射到表名并不比使用表名本身更好。而不是
select * from SomeQueryFrom(1),你可以写select * from Address -
I have a database including a table called [Table] which lists all tables in that database.SQL Server 已经为此提供了sys.tables表。您不需要创建额外的表。事实上,您可以使用OBJECT_NAME 函数从对象ID 中检索表名。你不需要额外的桌子。您可以编写declare @sql nvarchar(2000)='SELECT * from ' + QUOTENAME(OBJECT_NAME(@someID)); exec @sql;来创建和执行基于表 ID 的查询
标签: sql sql-server select tablename