Bre*_*ner 3 sql join google-bigquery
我有两张桌子.
表1是整数的单个COLUMN.
表2有三个COLUMNS:start_integer,end_integer,data
简单的查询是将整数列与数据连接在一起
integer >= start_integer AND integer <= end_integer
Run Code Online (Sandbox Code Playgroud)
在许多SQL实现中,这可以通过左条件JOIN ... ON BETWEEN来完成
SELECT tbl1.integer, tbl2.data FROM tbl1
LEFT JOIN tbl2 ON tbl1.integer BETWEEN tbl2.start_integer AND
tbl2.end_integer;
Run Code Online (Sandbox Code Playgroud)
但似乎BigQuery只支持JOIN ON而只有一个=条件.
这可以通过交叉连接来完成,但BigQuery抱怨我的表太大了.CROSS JOIN EACH无效.
如何在BigQuery SQL的限制内完成此连接任务?
下面是我的BigQuery SQL:
SELECT tbl1.integer, tbl2.data
FROM bq:data.tbl1
CROSS JOIN bq:data.tbl2
WHERE tbl1.integer BETWEEN tbl2.start_integer AND tbl2.end_integer;
Run Code Online (Sandbox Code Playgroud)
哪个返回错误:
错误:4.1 - 4.132:JOIN运算符的右侧表必须是一个小表.如果左侧表较小,则切换表;如果两个表都大于http://goo.gl/wXqgHs中描述的最大值,则使用JOIN EACH .
好消息(2016)!BigQuery现在支持不等式连接 - 确保取消选中"使用旧SQL选项".
示例查询:
SELECT *
FROM (
SELECT 1 x
) a JOIN (
SELECT 2 y
) b
ON a.x<b.y
Run Code Online (Sandbox Code Playgroud)
使用旧版SQL:
Error: ON clause must be AND of = comparisons of one field name from each table, ...
Run Code Online (Sandbox Code Playgroud)
使用标准SQL:
1 2
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4172 次 |
| 最近记录: |