【发布时间】:2018-07-31 13:56:35
【问题描述】:
我正在使用带有 Lucee 和 SQL Server Management Studio 的开发环境。我有两张桌子:
- 城市 - 列:城市、州、地区和邮编。
- 信息 - 列:城市、州、邮编
Info 有 80,000 多个条目。我只想更新Cities 表中的zip 列。 22,000 个条目中的每一个都为空。如果 City 和 State 存在匹配值,请根据 Info 将该值分配给 Cities。我还没有弄清楚如何在没有某种搜索值的情况下像那样完成整个查询。
我已经尝试过类似下面的代码。它从Cities 输出10,从Info 在2 个转储中输出最后一个索引[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>
【问题讨论】:
-
我阅读了您的信息并为您编写此查询更新城市 setities.zip = info.zip from info where info.city=cities.city and info.sate=cities.state and info.zip = 空
-
请edit您的问题并添加格式化的SQL查询(这样更容易阅读)。语法不太正确。查看上面链接中的最后一个查询,它显示了 MySQL JOIN 需要如何位于 UPDATE 中(没有 FROM 子句)。更像这样的东西
UPDATE cities c INNER JOIN info i ON i.state = c.state AND i.city = c.city SET c.zip = i.zip WHERE c.zip IS NULL -
@EhsanPanahi 您的 SQL 语句正是我所需要的!!!起初 0 行更新和我拿走了 c.zip 是 NULL 并且它工作得很好!谢谢!!!!
-
@EhsanPanahi - 这是 SQL Server 语法。 MySQL 使用不同的语法stackoverflow.com/questions/15209414/…
标签: sql sql-server coldfusion cfml lucee