【发布时间】:2016-11-25 11:06:52
【问题描述】:
这是我第一次在堆栈溢出上发帖,我知道以前有人问过类似的问题,所以我提前道歉。但是,无论其他论坛中给出的解决方案如何,我似乎都无法解决这个问题。
我在 SQL Server 中有两张表,一张包含风暴事件信息,另一张包含县信息。它们都包含相同的county_fips 数字。这些都不包含主键或外键。
我需要将风暴事件信息中的 NA 替换为县表中的纬度/经度。如果没有外键/主键关系,这可能吗?
StormEvent 表如下所示:
ID | Lat | Lon | State_FIPS | County_FIPS
------------------------------------------
1 | 33 | -88 | 028 | 087
2 | 31 | -98 | 048 | 225
3 | NA | NA | 017 | 034
4 | 39 | -100| 020 | 063
等等……
CountyTable 看起来像这样(statefp10,countyfp10 = FIPS;intptlat10,intptlon10 = lat/lon):
StateFP10 | County_FP10 | State_FP10| intptlat10 | intptlon10
--------------------------------------------------------------
1 | 087 | 028 | 33 | -88
2 | 225 | 048 | 31 | -98
3 | 034 | 017 | 45 | -102
等等。
到目前为止,我已经尝试了以下代码来调整 Lat 列,但略有不同:
UPDATE n
SET n.lat= c.intptlat10
FROM StormEvent n
INNER JOIN CountyTable c ON n.County_FIPS= c.CountyFP10
WHERE n.LAT = 'NA'
查询已执行,我被告知有 x 行受到影响,但是当我编写一个 select 语句来检索 StormEvent 表的 Lats 中包含的所有 NA 时,它们仍然存在。
如果有人能指出我正确的方向,将不胜感激!再次,如果我以错误的方式进行此操作,我深表歉意,这是我的第一篇文章,我是 SQL 新手。
【问题讨论】:
-
我认为
SET的列名不正确。应该是n.LAT= . . .? -
您真的需要设置这些值,还是只需要在查询时查看那里的数据?
-
我确实需要设置值,最终必须将此表导出回 R。
-
set 的列名不正确,这是论坛中的一个错误...谢谢!我必须更新我的问题
-
可以导出查询结果吗?
标签: sql sql-server join sql-update inner-join