根据另一个 table 更新 table

Update a table based on another table

我正在使用带有 Lucee 和 SQL Server Management Studio 的开发环境。我有两个 tables:

有 80,000 多个条目 Info。我只想更新 Cities table 中的 zip 列。 22,000 个条目中的每一个都为空。如果 City 和 State 存在匹配值,则根据 Info 将值分配给 Cities。我还没有想出如何在没有某种搜索价值的情况下完成整个查询。

我试过类似下面的代码。它从 Cities 输出 10,在 2 个转储中从 Info 输出最后一个索引 [9]。为什么它不显示 i 的每次迭代?它可能是 30,000,以便完成整个查询,但我仍然如何根据 Info 中的值进行更新,并且即使 Info 中有多个匹配值,我仍然只更新一次。另外,如果Info中不存在匹配值,如何不设置任何错误信息?

<cfquery name="list" datasource="source">
    SELECT TOP 10 *
    FROM cities
    ORDER BY CITY ASC
</cfquery>

<cfparam name="i" default="1">
<cfloop query="#list#" from="1" to="10" index="i">
  <cfoutput>#list.city[i]#</cfoutput>
  <cfoutput>#list.state[i]#</cfoutput>
</cfloop>
<cfquery name="master" datasource="source">
    SELECT TOP 10 *
    FROM WEBMASTERCOPY
    WHERE STATE = '#list.state[i]#' AND city = '#list.city[i]#'
</cfquery>

结果是这样的:

 update Cities
   set Cities.ZIP = Info.ZIP from Info 
   where Cities.STATE = Info.STATE
 and 
Cities.CITY = Info.CITY 

您不需要 ColdFusion,但您可以使用 cfquery。这是 MySQL 无论如何都有效:

UPDATE cities t1, WEBMASTERCOPY t2
SET t1.zip = t2.zip
WHERE t1.city = t2.city AND t1.state = t2.state AND t1.zip IS NULL

先备份=)