【发布时间】:2016-08-11 08:07:27
【问题描述】:
是否有可能直接引用强类型 SQL 表对象,即使它已被别名?
例如,以下脚本呈现The multi-part identifier "dbo.MyTable.Col3" could not be bound 异常:
SELECT
*
FROM dbo.MyTable MT
INNER JOIN dbo.AnotherTable AT ON
MT.Col1 = AT.Col2
WHERE
dbo.MyTable.Col3 = 'Foo'
【问题讨论】:
-
有趣的问题,但是是什么让你想到了这个?
-
我有一段动态 SQL,它根据输入参数连接起来。例如(参考上述脚本),整个
SELECT和FROM子句是动态部分。WHERE子句根据是否将WHERE子句作为参数传入来连接。现在执行该过程的用户不一定知道不同的别名,只知道表名。 -
如果您不控制
FROM子句,那么它们可以轻松地多次包含同一个表 - 这是使用别名允许发生的关键特性之一 - 在这种情况下,您将如何预计这会在这种情况下发挥作用吗? -
不确定我是否正确理解了您的问题 DTU。动态部分存储为列值并且是固定的。
WHERE子句根据期望的结果是可变的。
标签: sql-server tsql sql-server-2012 alias