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方言解决其中一些问题。请继续收看