Sql-server:根据IP

时间:2016-06-06 14:08:19

标签: sql sql-server

我有一个表LogPixelCall(两行示例):

1   d5104006-8a82-4dfe-b6ca-587d25e869e9    1   2   2016-03-07 16:31:41.997 **92.26.242.166**   NULL    
2   5a5ffea2-3a70-4138-aeb7-4dd94900ef27    1   2   2016-03-07 17:39:57.557 **185.28.19.174**   NULL

其中粗体是IP,最后一个NULL字段是来自其他表的CountryId。

现在我有Iplookup表,我必须将转换后的IP传递给long(所以我必须使用该转换算法)并返回CountryCode(GB,US,AU),然后我将CountryCode与Country表进行比较,其中我存储国家。我想用CountryId手动更新LogPixelCall信息表,因为之前没有。

问题:基于提供的数据库架构,如果我知道LogPixelCall中的ClientIp,如何更新LogPixelCall CountryId NULL字段,我可以使用IpLookup获取CountryIsoCode并与Country连接?

1 个答案:

答案 0 :(得分:0)

update LogPixelCall set CountryId = c.Id
--select * /*Check first to make sure */
from LogPixelCall lpc
inner join IpLookup ip on lpc.ClientIp between ip.From and ip.To
inner join Country c on c.Code = ip.CountryIsoCode