2013-12-08 124 views
2

我有兩個表:插入數據,根據某些條件另一個表

  • 客戶端:客戶端ID,LATT,長
  • 地區:Regionid,LATT,長

我想轉移RegionidRegionClient,其中lattlong列匹配。

這是我的代碼。我不知道該怎麼做:

INSERT INTO Client (Region) 
SELECT Region.Regionid 
FROM Region 
INNER JOIN Client ON Client.Latt = Region.Latt 
    AND Client.Long = Region.Long 
WHERE Client.Latt = Region.Latt 
    AND Client.Long = Region.Long 

,我應該Client表中創建Region列第一?

任何想法感謝!

回答

1

是的。你必須在客戶端創建塔區第一:

ALTER TABLE client ADD region int; 

變化中斷到別的東西,如果regionId表個區域是其他類型的

,那麼你可能要更新,而不是插入的,

UPDATE c 
SET c.region = r.regionId 
FROM client c 
INNER JOIN region r ON c.latt = r.latt AND c.long = r.long 

UPDATE後,您可以刪除lattlong列有你的表歸

sqlfiddle demo

+0

非常感謝。有效。只要我有足夠的聲譽,我會盡快增加您的聲譽 – Ulugbek

1

確實應該在客戶端表中添加另一列,我們只需將其稱爲Region。

ALTER TABLE CLIENT 
ADD REGION INTEGER 

這將列添加到您的表,那麼就做一個更新列,如:

UPDATE C 
SET Region = R.RegionID 
FROM Region R 
INNER JOIN CLIENT C ON C.LATT = R.LATT AND C.LONG = R.LONG 

你不需要WHERE子句中的條件了,因爲他們是隱在JOIN,因爲他們是相同的條件。

+0

非常感謝。 – Ulugbek

相關問題