查询使用相同字段的多个表
Posted
技术标签:
【中文标题】查询使用相同字段的多个表【英文标题】: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 个以上的表中查询共享字段?
【问题讨论】:
也许添加示例数据和预期结果?您当前正在两个表之间创建笛卡尔积。您可能应该使用join
或union
,但如果没有样本数据就很难知道。
您可以通过包含别名来解决此问题,这些别名决定您从哪个表中选择name
列。
【参考方案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 中提取结果吗?这就是我尝试这个时看到的结果以上是关于查询使用相同字段的多个表的主要内容,如果未能解决你的问题,请参考以下文章
SQL查询结果一字段相同合并,另一字段为数字和逗号合并并去重