2013-12-08 47 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