Google bigquery 表别名在子选择之外的可见性是故意的还是错误的?

Google bigquery 表别名在子选择之外的可见性是故意的还是错误的?,google-bigquery,Google Bigquery,考虑以下查询: select s.word ,s.word ,x.word ,x.s.word from (select s.word from publicdata:samples.shakespeare s where corpus = '1kinghenryiv') x order by word 事实证明,如果不在子选择中应用别名,则不仅可以使用word和x.word引用表达式,还可以使用s.word甚至x.s.wo

考虑以下查询:

select
  s.word
  ,s.word
  ,x.word
  ,x.s.word

from (select
        s.word 

      from publicdata:samples.shakespeare s

      where corpus = '1kinghenryiv') x

order by
  word
事实证明,如果不在子选择中应用别名,则不仅可以使用word和x.word引用表达式,还可以使用s.word甚至x.s.word引用表达式

来自SQL Server,这让我感到惊讶。这是令人恼火的,因为如果上层有另一个表别名s,它可能会导致歧义错误。这似乎完全是多余的


这种行为是故意的还是一个bug?

我确实认为使用点符号是这里的一个特性,而bug仍然是可能的

若要停止点链并避免歧义,应为相应字段提供显式别名

例如,以下操作将失败:

select
  word
  ,s.word
  ,x.word
  ,x.s.word
from (select
        s.word AS SWORD -- << added alias
      from publicdata:samples.shakespeare s
      where corpus = '1kinghenryiv') x
order by word

我确实认为使用点表示法是这里的一个特性,而bug仍然是可能的

若要停止点链并避免歧义,应为相应字段提供显式别名

例如,以下操作将失败:

select
  word
  ,s.word
  ,x.word
  ,x.s.word
from (select
        s.word AS SWORD -- << added alias
      from publicdata:samples.shakespeare s
      where corpus = '1kinghenryiv') x
order by word

在这些情况下,别名语义确实有点不稳定,但在不破坏用户依赖的查询的情况下很难更改它们,我们的主要目标是确保现有查询继续工作


我们确实计划用SQL方言解决其中一些问题。请继续收看

在这些情况下,别名语义确实有点不稳定,但是如果不破坏用户依赖的查询,就很难更改它们,我们的主要目标是确保现有查询继续工作

我们确实计划用SQL方言解决其中一些问题。请继续收看