SQL Server从存储在列或列表中的多个表中选择

时间:2018-11-07 18:06:24

标签: sql-server ssms

由于在没有实际数据的情况下解决此问题太复杂了,我将尝试添加一些内容:

               |       tables 1       |      table 2        |   ...   |     table n
---------------------------------------------------------------------------------------
columns_name:  |  name | B | C | D    |  name | B | C | D   |   ...   |    name | B | C | D
---------------------------------------------------------------------------------------
column_content:|  John | ...          |  Ben  | ...         |   ...   |    John| ...

目标是提取N表中name ='John'的行。

我们已经有了一个名为[table_names]的表,其中n个表名存储在[column_table_name]列中。

现在我们想做这样的事情:

SELECT [name]
FROM (SELECT [table_name]
      FROM INFORMATION_SCHEMA.TABLES)
WHERE [name] = 'Jonh'

表名是动态的,因此在我们运行information_schema.tables查询之前是未知的。

最后的查询给我一个错误。关于如何在子查询中使用多个存储表名称的任何线索?

1 个答案:

答案 0 :(得分:1)

您需要为子查询加上别名才能引用它。加号应为table_name

SELECT [table_name]
FROM (SELECT [table_name]
      FROM INFORMATION_SCHEMA.TABLES) AS X
WHERE [table_name] = 'Jonh'