繁体   English   中英

根据另一个表更新一个表

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM