由于在没有实际数据的情况下解决此问题太复杂了,我将尝试添加一些内容:
| 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查询之前是未知的。
最后的查询给我一个错误。关于如何在子查询中使用多个存储表名称的任何线索?
答案 0 :(得分:1)
您需要为子查询加上别名才能引用它。加号应为table_name
SELECT [table_name]
FROM (SELECT [table_name]
FROM INFORMATION_SCHEMA.TABLES) AS X
WHERE [table_name] = 'Jonh'