我坚持这个查询!我有一个表Logs.Customer_Internet_Activity_Information
,其中包含客户的测试数据。表中有一个IP地址。在另一张表中
Logs.IP
有一个startIpnum
,一个endIpNum
和一个localID
。 startIPnum
是范围中较低的IP地址,endIpNum
是范围中的最大IP地址。每个范围都有一个引用城市,国家等的本地ID ...
我的查询是尝试在范围中查找客户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
答案 0 :(得分:0)
因此,您遇到的直接问题是Google不允许cross join each
。
这有点像黑客,但如果性能不是你的问题,你可以尝试:
select
t1.email
,t1.IP
,t2.Local_ID
from (select true as dummy, email, Ip from [TablewithcustomerIP address]) as t1
inner join each (select true as dummy,Local_ID, startIpNum, endIpNum from [table with IP ranges]) as t2
on t2.dummy = t1.dummy
where t1.IP between t2.startIpNum and t2.endIpNum
然而,查询可能需要很长时间才能完成,如果有的话。一个更好的解决方案是加入你的where
条件,但不幸的是,目前还不可能。我急切地等待Google添加自定义连接条件的那一天,它可能是我最想念的SQL的功能。