根据某些条件将数据插入另一个表

时间:2013-12-08 16:24:32

标签: sql sql-server-2008

我有两张桌子:

  • 客户:clientid,latt,long
  • 地区:Regionid,latt,long

我希望从Regionid转移RegionClient,其中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

我应该先在Region表格中创建Client列吗?

感谢任何想法!

2 个答案:

答案 0 :(得分:1)

是。您必须首先在客户端中创建列Region:

ALTER TABLE client ADD region int;

如果表regio中的regionId属于其他类型

,则将int更改为其他内容

然后你可能想要UPDATE而不是insert,

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

答案 1 :(得分:1)

您确实应该在Client表中添加另一列,我们只需将其命名为Region。

ALTER TABLE CLIENT
ADD REGION INTEGER

这会将列添加到您的表中,然后在该列上执行UPDATE,如:

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中,因为条件相同。