2010-03-27 4 views
2

SQL Server 2005 데이터베이스에 다음 시나리오가 있습니다.SQL Server 쿼리 솔루션 제공 추천

zipcodes 표는 다음과 같은 필드와 값 (단지 샘플)을 가지고 : 나는 비교할 같은

이제
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 

, 내 요구 사항은 다음과 같습니다

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

place 테이블 필드와 값 다음이 내 우편 번호는 place이고 zipcode 테이블에서 사용 가능한 위도 및 경도 입력란을 업데이트하십시오.

그리고 테이블에는 항목이 없기 때문에 zipcode 테이블에 null이 있어야합니다.

그리고 중요한 문제는 내 데이터베이스에 50,000,000 개 이상의 레코드가있는 것입니다. 따라서 쿼리는이 기능을 지원해야합니다.

일부 솔루션을 시도했지만 불행히도 적절한 출력을 얻지 못했습니다. 어떤 도움을 주시면 감사하겠습니다

...

답변

5

당신은 당신이 문서

UPDATE (Transact-SQL)

에서이를 확인할 수

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 

를 참조 시도 할 수 있습니다

+0

안녕하세요, 감사합니다. – Nirmal