根据另一个 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
先备份=)
我正在使用带有 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
先备份=)