【发布时间】:2021-06-11 23:48:02
【问题描述】:
我有两个表,“BLANKTABLE”和“ACTIVETABLE”。它们具有相同的列“公司、城市、州”。活动表每列有数百万条记录,BLANK 表只填写了“公司”列(其他列为空)。两者之间有很大的重叠。
我想将 ACTIVETABLE 中的行数据(城市和州)插入到 BLANKTABLE 中,其中公司字段在两者上都匹配。因此,如果两个表的公司列中都有公司“示例”,它会将 ACTIVE 中的城市和州数据插入到 BLANK 中,基本上是从 ACTIVE 中克隆该行。我的第一个想法是这个,但我觉得它的效率非常低。
INSERT INTO BLANKTABLE
(Company, [City], [State])
SELECT de.company,
de.[city],
de.[state]
FROM [ACTIVETABLE] de
WHERE EXISTS(SELECT website, company, zip
FROM BLANKTABLE d2
WHERE d2.company = de.company)
有什么想法吗?
更新:
其实,也许就是这样
UPDATE blanktable
SET blanktable.city = activetable.city,
blanktable.state = activetable.state
FROM blanktable d2
INNER JOIN activetable de
ON d2.company = de.company;
对吗?
【问题讨论】:
-
如果要插入新行,使用第一种方法。如果要更新现有行,请使用第二个。我不清楚你的问题是什么。
-
我想更新行,而不是插入新行。我现在意识到第一个查询是多么愚蠢!谢谢
-
编辑你的问题,很困惑你想要什么,更新还是插入?
标签: sql sql-server database