Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 基于另一个表更新表_Sql_Sql Server_Coldfusion_Cfml_Lucee - Fatal编程技术网

Sql 基于另一个表更新表

Sql 基于另一个表更新表,sql,sql-server,coldfusion,cfml,lucee,Sql,Sql Server,Coldfusion,Cfml,Lucee,我正在使用Lucee和SQLServerManagementStudio的开发环境。我有两张桌子: 城市-列:城市、州、地区和邮政编码。 信息栏:城市、州、邮政编码 有80000多条信息。我只想更新Cities表中的zip列。22000个条目中的每个条目都为空。如果存在城市和州的匹配值,请根据信息将该值指定给城市。我还没有弄明白如何在没有搜索值的情况下完成整个查询 我试过下面的代码。它从城市中输出10个,从2个转储中的信息中输出最后一个索引[9]。为什么它不显示i的每个迭代?为了完成整个查询,它

我正在使用Lucee和SQLServerManagementStudio的开发环境。我有两张桌子:

城市-列:城市、州、地区和邮政编码。 信息栏:城市、州、邮政编码 有80000多条信息。我只想更新Cities表中的zip列。22000个条目中的每个条目都为空。如果存在城市和州的匹配值,请根据信息将该值指定给城市。我还没有弄明白如何在没有搜索值的情况下完成整个查询

我试过下面的代码。它从城市中输出10个,从2个转储中的信息中输出最后一个索引[9]。为什么它不显示i的每个迭代?为了完成整个查询,它可能是30000,但是我如何基于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

首先进行备份=

我阅读了您的信息,并为您编写了此查询。更新cities set cities.zip=info.zip from info where info.city=cities.city和info.sate=cities.state和info.zip=null请回答您的问题并添加格式化的SQL查询,以便更容易阅读。语法不太正确。看看上面链接中的最后一个查询,它显示了在UPDATE-there-no-FROM子句中MySQL连接的需要。类似于此更新cities c internal JOIN info i ON i.state=c.state和i.city=c.city SET c.zip=i.zip,其中c.zip是NULL@EhsanPanahi你的SQL语句正是我需要的!!!在更新和我删除c.zip的最初0行中,c.zip是空的,它工作得非常好!非常感谢。@EhsanPanahi可能重复-这是SQL Server语法。MySQL使用不同的语法,如果这种语法有效的话-你没有使用MySQL!它对SQL Server等有效。。虽然@Ageax您是对的,但真正起作用的是Microsoft SQL Server管理研究;-SQL语法通常是特定于供应商的,所以一定要用正确的dbms标记未来的问题,以获得准确的答案-