相当于子查询的“JOIN EACH”
Posted
技术标签:
【中文标题】相当于子查询的“JOIN EACH”【英文标题】:Equivalent of "JOIN EACH" for a subquery 【发布时间】:2013-11-12 18:31:11 【问题描述】:我正在尝试使用大型子查询运行查询,但出现以下错误:表太大,无法连接。考虑使用 JOIN EACH。详情请见https://developers.google.com/bigquery/docs/query-reference#joins。
那么,对于子查询,是否有相当于 JOIN EACH 的方法,我可以在其中加入大于 8mb 的表?我在文档中或四处搜索时都没有看到任何内容。这是我正在使用的查询——如果有办法重写它以更好地适应 bigquery 模型,那么我也对此持开放态度。
SELECT *
FROM [x.y]
WHERE column_hash NOT IN (
SELECT column_hash from [x.z]
)
【问题讨论】:
为什么不能在查询中加入“JOIN EACH”? 【参考方案1】:您正在执行的查询是反连接,而不是子查询。您可以将其重写为显式连接,但它有点冗长:
SELECT y.* -- Note you may have to expand out these fields yourself
FROM [x.z] as z
LEFT OUTER JOIN EACH [x.y] as y ON y.column_hash = z.column_hash
WHERE y.column_hash is NULL
【讨论】:
感谢乔丹!在我的情况下,实际查询是“SELECT y.* FROM [x.y] as y LEFT OUTER JOIN EACH [x.z] as z ON y.column_hash = z.column_hash WHERE z.column_hash IS NULL”,它具有与您提供的查询,但被颠倒了。我需要复习一下我的 SQL...以上是关于相当于子查询的“JOIN EACH”的主要内容,如果未能解决你的问题,请参考以下文章