【发布时间】:2012-10-04 15:49:09
【问题描述】:
我正在尝试像这样在 T-SQL 中编写查询:
select *
from
(select t.name tablename
from sys.columns c join sys.tables t on c.object_id = t.object_id
where c.name like 'column1'
) candidatetables
where tablename.column2 = 3
问题出在最后一个过滤器上。我收到此错误“无法绑定多部分标识符“tablename.column2”。”。
此查询应获取其架构中具有列“column1”的表,并且该列的值为“column2”的列的值肯定存在于所有表中。是否可以写最后一个过滤器以不同的方式完成此操作?
【问题讨论】:
-
那么您希望查询的输出是表名列表,还是希望表中的数据?
-
首先,我想获取在其架构中具有 column1 的表以及它们的 column2 的给定值。然后我想查询这些表。将其视为一个两步过程。
-
假设我有表 T1(column1, column2), T2(column1, column2), T3(column1, column2), T4(column4, column2) 此外,假设 T1.column2 = 3, T2。 column2 = 1000,T3.column2 = 3。首先我会得到 T1、T2 和 T3,因为它们的架构中都有 column1。但是在下一步中,我想获取表T1和T3,因为这些表的字段column2的值为3。最后我想从这些表中查询其他字段。希望这更清楚。
标签: generics sql-server-2012 dynamic-sql