当前位置: 代码迷 >> Sql Server >> MSSQL表关联join有关问题
  详细解决方案

MSSQL表关联join有关问题

热度:8   发布时间:2016-04-24 10:38:31.0
MSSQL表关联join问题
update dbo.openid
ser countryCode=(select countryCode from dbo.GeoIP where openid.ips between beginIPNum and endIPNum)
from dbo.openid


表openid里面是主记录(大概400万数据),每条记录都有一个ips 记录的是ip转换称的数值型数据


表GeoIP 里面记录所有IP的取值范围,里面标记的是beginIPNum到endIPNum的IP范围所属国家


请问这样的数据应该怎么优化?
------------------ 在线等
大神们,请帮我分析下
------解决方案--------------------
没太看明白,lz的问题是
无法精确更新的问题? 还是效率问题?


------解决方案--------------------
你那语句看似也没问题似的,执行得过么?没试。关联不一定非得 = 。

不过MSSQL我一般都是这样写(关联也不是=)。你那写法好像Oracle经常这么写。

UPDATE dbo.openid SET countryCode=G.countryCode
FROM dbo.openid O
JOIN dbo.GeoIP G ON O.IPS>=G.beginIPNum AND O.IPS<=endIPNum

------解决方案--------------------

update t1 SET t1.countryCode=t2.countryCode
from dbo.openid t1
INNER JOIN dbo.GeoIP t2 ON t1.ips between t2.beginIPNum and t2.endIPNum

  相关解决方案