2010-03-27 109 views
2

我在我的SQL Server 2005数据库中有以下情形。SQL Server查询解决方案暨建议需要

zipcodes表有以下字段和值(只是一个示例):

zipcode  latitude longitude 
-------  -------- --------- 
65201  123.456  456.789 
65203  126.546  444.444 

place表有以下字段和值:

id  name  zip  latitude longitude 
--  ----  ---  -------- --------- 
1  abc  65201  NULL  NULL 
2  def  65202  NULL  NULL 
3  ghi  65203  NULL  NULL 
4  jkl  65204  NULL  NULL 

现在,我的要求是像我想比较我的邮政编码为place表格,并从zipcode表中更新可用的经纬度字段。

还有一些zipcodes它没有在zipcode表中输入,所以应该保持为空。

而且主要问题是像我有更多然后50,00,000记录在我的分贝。所以,查询应该支持这个功能。

我已经尝试了一些解决方案,但遗憾的是没有得到正确的输出。

任何帮助,将不胜感激......

回答

5

你可以尝试像

UPDATE place 
SET  latitude = z.latitude, 
     longitude = z.longitude 
FROM place p INNER JOIN 
     zipcodes z ON p.zip = z.zipcode 

见例如

DECLARE @zipcodes TABLE(
     zipcode VARCHAR(10), 
     latitude FLOAT, 
     longitude FLOAT 
) 

DECLARe @place TABLE(
     id INT, 
     name VARCHAR(10), 
     zip VARCHAR(10), 
     latitude FLOAT, 
     longitude FLOAT 
) 

INSERT INTO @zipcodes SELECT '65201',123.456,456.789 
INSERT INTO @zipcodes SELECT '65203',126.546,444.444 

INSERT INTO @place SELECT 1,'abc','65201',NULL,NULL 
INSERT INTO @place SELECT 2,'def','65202',NULL,NULL 
INSERT INTO @place SELECT 3,'ghi','65203',NULL,NULL 
INSERT INTO @place SELECT 4,'jkl','65204',NULL,NULL 

UPDATE @place 
SET  latitude = z.latitude, 
     longitude = z.longitude 
FROM @place p INNER JOIN 
     @zipcodes z ON p.zip = z.zipcode 

SELECT * 
FROM @place 

您可以从文档

UPDATE (Transact-SQL)

验证这一点
+0

嘿,谢谢@astander ...它适用于我.... – Nirmal 2010-03-27 12:08:17