Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 作为其他查询的结果,使用表名从select语句中获取数据_Sql_Sql Server_Sql Server 2008 - Fatal编程技术网

Sql 作为其他查询的结果,使用表名从select语句中获取数据

Sql 作为其他查询的结果,使用表名从select语句中获取数据,sql,sql-server,sql-server-2008,Sql,Sql Server,Sql Server 2008,我在SQL方面不是很完美。 但是我有一个场景,我需要从另一个查询的结果表中获取数据 大概是这样的: select * from (select top 1 col from tableA) 其中top 1 col包含表名 样本数据: 表a: col tableB 表B: col 1 然后您需要使用动态SQL。虽然我经常在应用程序中使用动态SQL,但对于更普通的任务,通常会有更好的解决方案。您是说tableA中的col列包含表名吗?是的,您是正确的。如果您是指col as table nam

我在SQL方面不是很完美。 但是我有一个场景,我需要从另一个查询的结果表中获取数据

大概是这样的:

select * from (select top 1 col from tableA)
其中
top 1 col
包含表名

样本数据:

表a:

col
tableB
表B:

col
1

然后您需要使用动态SQL。虽然我经常在应用程序中使用动态SQL,但对于更普通的任务,通常会有更好的解决方案。您是说tableA中的col列包含表名吗?是的,您是正确的。如果您是指col as table name,则必须以友好方式生成SQL命令(纯SQL中不允许使用select result as table name)正如@GordonLinoff提到的,动态SQL在这里可以工作-您能提供一些示例数据吗?那么您需要使用动态SQL。虽然我经常在应用程序中使用动态SQL,但对于更普通的任务,通常会有更好的解决方案。您是说tableA中的col列包含表名吗?是的,您是正确的。如果您是指col as table name,则必须以友好方式生成SQL命令(纯SQL中不允许使用select result as table name)正如@GordonLinoff提到的,动态SQL在这里可以工作-您能提供一些示例数据吗?太好了。这正是我想要的。太好了。这就是我想要的。
DECLARE @sql NVARCHAR(200);
SELECT TOP 1 @sql = 'SELECT * FROM ' + col FROM tableA
EXECUTE sp_executesql @sql