【问题标题】:Is it possible to ignore SQL table alias?是否可以忽略 SQL 表别名?
【发布时间】: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,它根据输入参数连接起来。例如(参考上述脚本),整个SELECTFROM 子句是动态部分。 WHERE 子句根据是否将 WHERE 子句作为参数传入来连接。现在执行该过程的用户不一定知道不同的别名,只知道表名。
  • 如果您不控制 FROM 子句,那么它们可以轻松地多次包含同一个表 - 这是使用别名允许发生的关键特性之一 - 在这种情况下,您将如何预计这会在这种情况下发挥作用吗?
  • 不确定我是否正确理解了您的问题 DTU。动态部分存储为列值并且是固定的。 WHERE 子句根据期望的结果是可变的。

标签: sql-server tsql sql-server-2012 alias


【解决方案1】:

不,你不能。

引用FROM (Transact-SQL)

如果定义了别名,则不能使用表名。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-01-30
    • 2016-08-10
    • 2018-02-06
    • 2021-10-01
    • 1970-01-01
    • 2014-11-26
    • 2012-01-16
    • 2011-12-07
    相关资源
    最近更新 更多