代码之家  ›  专栏  ›  技术社区  ›  Mikhail Berlyant

为什么我在JOIN中获得不明确的字段名“x”

  •  3
  • Mikhail Berlyant  · 技术社区  · 8 年前

    事实1-我在BigQuery Web UI中成功运行了如下简单查询

    SELECT
      a.id AS id,
      b.v AS v,
      c.w AS w
    FROM (SELECT 1 AS id, "abc" AS x, "xyz" AS y) AS a
    LEFT JOIN (SELECT "abc" AS x, "111" AS v) AS b ON a.x = b.x
    LEFT JOIN (SELECT "xyz" AS y, "222" AS w) AS c ON a.y = c.y  
    

    失败!

    enter image description here

    事实3-使用以下选项对表进行相同查询- 成功 !

    enter image description here

    问题 -为什么会出现此错误?

    笔记 :
    我在SO之外被问到这个问题,所以决定在这里分享。
    正如您所看到的,“找到了解决方法”-因此,如果没有对实际问题进行解释/回答,请不要建议如何重新编写查询。

    1 回复  |  直到 8 年前
        1
  •  4
  •   Community rcollyer    4 年前

    今天早上,我在试图保存视图时遇到了类似的问题,发现其他人在web UI和批处理之间切换时也遇到了这个问题。据我所知,这是一个奇怪的角落案件,你可以用三重连接。

    我找到了 this 有助于了解发生了什么,特别是这一点:

    “这里的根本问题是,查询中最后一个JOIN的左边源试图将[a.x]和[b.x]合并到同一个作用域中,这两个作用域的名称都是'x',并导致此错误。”

    Official Google BigQuery issue and feature tracker 并被提到上述SO岗位。

    希望其中的一个能帮你澄清一下。