我有两张桌子:
我希望从Regionid
转移Region
到Client
,其中latt
和long
列匹配。
这是我的代码。我不知道该怎么做:
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
列吗?
感谢任何想法!
答案 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
之后,您可以删除latt
和long
列以使表格规范化
答案 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
中,因为条件相同。