[英]Update a table based on another table
我正在使用Lucee和SQL Server Management Studio开发环境。 我有两个表:
有80,000多个条目Info
。 我只想更新“ Cities
表中的zip
列。 22,000个条目中的每个条目都为空。 如果“城市”和“州”的值匹配,则根据“ Info
将值分配给“ Cities
。 我还没有弄清楚如何在没有某种搜索价值的情况下进行整个查询。
我已经尝试过以下代码。 它从Cities
输出10,在两个转储中从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
尽管可以使用cfquery
,但您不需要ColdFusion。 这是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
首先进行备份=)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.