【问题标题】:query multiple tables that use the same fields查询使用相同字段的多个表
【发布时间】:2016-06-16 01:07:55
【问题描述】:

我正在使用 bigquery 来查询共享一个架构的两个数据集:

SELECT
    *
FROM (
  SELECT
    name as name,
    REGEXP_EXTRACT_ALL(details, r"(value=\w+)") as regex
  FROM
    Dataset.table1,
    Dataset.table2 )
WHERE
  ARRAY_LENGTH(regex) > 0

但我收到“名称”字段不明确的错误,这是有道理的,因为我没有指定两个表中的任何一个。

有没有办法像这样一次从 2 个以上的表中查询共享字段?

【问题讨论】:

  • 也许添加示例数据和预期结果?您当前正在两个表之间创建笛卡尔积。您可能应该使用joinunion,但如果没有样本数据就很难知道。
  • 您可以通过包含别名来解决此问题,这些别名决定您从哪个表中选择name 列。

标签: sql google-bigquery


【解决方案1】:

由于使用了 ARRAY_LENGTH 和 REGEXP_EXTRACT_ALL,看起来您正在使用BigQuery Standard SQL 模式。
同时,您仍在使用 UNION ALL 的旧 SQL 概念,通过使用 comma - 这不是标准 SQL 的情况!
您应该使用明确的 UNION ALL
希望这会有所帮助!

【讨论】:

    【解决方案2】:

    你可以使用 tablename.columnname 使用以下查询

    SELECT
        *
    FROM (
      SELECT
        table1.name as name,
        REGEXP_EXTRACT_ALL(details, r"(value=\w+)") as regex
      FROM
        Dataset.table1,
        Dataset.table2 )
    WHERE
      ARRAY_LENGTH(regex) > 0
    

    【讨论】:

    • 那么这不是只从 table1 中提取结果吗?这就是我尝试这个时看到的结果
    猜你喜欢
    • 1970-01-01
    • 2021-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-23
    • 1970-01-01
    • 1970-01-01
    • 2016-02-04
    相关资源
    最近更新 更多