【发布时间】:2015-12-22 04:43:30
【问题描述】:
我被这个查询卡住了!我有一张表Logs.Customer_Internet_Activity_Information,其中包含客户的测试数据。表中有一个IP地址。在另一张桌子上
Logs.IP 有一个 startIpnum 和一个 endIpNum 和一个 localID。 startIPnum 是该范围内的较低 IP 地址,endIpNum 是该范围内的最大 IP 地址。每个范围都有一个本地 ID,它引用一个城市、国家等......
我的查询试图在 Range 中查找客户 IP 以查找本地 ID。
Select t1.email ,t1.IP , t2.Local_ID
from [TablewithcustomerIP address] as t1 cross join [table with IP ranges] as t2
where t1.IP between t2.startIpNum and t2.endIpNum
【问题讨论】:
-
您能否评论一下您的查询当前执行的操作,以及这与您期望的行为有何不同?
-
即使我切换表时也会出现此错误... 3.96 - 3.168: JOIN 运算符的右侧表必须是一个小表。如果左侧表较小,则切换表,如果两个表都大于goo.gl/wXqgHs 中描述的最大值,则使用 JOIN EACH。
-
您是否尝试按照错误提示将“JOIN”更改为“JOIN EACH”?或者,如果您的 t1 较小,请尝试反转它们?你说当你切换表时你会得到这个......当你不切换它们时,你会得到什么?
-
当我在连接错误消息中反转表时:错误:3.74 - 3.167:JOIN 运算符的右侧表必须是一个小表。如果左侧表较小,则切换表,如果两个表都大于goo.gl/wXqgHs 中描述的最大值,则使用 JOIN EACH。如果我尝试加入每个它需要一个 ON 子句..这两个表之间没有链接变量..
-
hmmmm...对此不确定,但我认为您可以执行“ON t1.IP between...”并让它工作...如果这不起作用,让我知道,可能有一种方法可以使用子查询来获取您想要的内容
标签: join google-bigquery