1

我有一个TABLES_IDS看起来像这样的表:

Table_ID  Table_Name  Table_Column
--------  ----------  ------------
100       Attributes  Attribute_id
101       NewSamples  Section_id
...

我有一个“第一个查询”,它返回多个Table_Name. 这Table_Name实际上是另一个表的名称,并且Table_Column是一列。我需要执行以下操作:

  1. 对于每个获得Table_Name的 ,我需要检索相应的Table_Column值。
  2. 使用Table_Nameand Table_Column,创建一个新的 sql 查询,例如

    SELECT FROM Table_Name WHERE Table_Column = 12345
    
  3. Table_Name对第一个查询返回的每一个自动重复everyting 。

4

1 回答 1

4

如果我理解您的问题,您希望根据存储在此表中的表/列名运行一系列查询。您不能将表和列名作为变量或来自查询或表达式的结果引用,因此您需要使用动态 SQL,例如

DECLARE @sql NVARCHAR(MAX);

SET @sql = N'';

SELECT @sql = @sql + N'SELECT * FROM dbo.' 
  + QUOTENAME(Table_Name) + ' WHERE ' 
  + QUOTENAME(Table_Column) + ' = 12345;'
FROM dbo.TABLES_IDS
-- WHERE...
;

EXEC sp_executesql @sql;
于 2013-01-29T17:07:53.830 回答