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 如何在Access中运行多重更新?_Sql_Ms Access_Syntax_Sql Update - Fatal编程技术网

Sql 如何在Access中运行多重更新?

Sql 如何在Access中运行多重更新?,sql,ms-access,syntax,sql-update,Sql,Ms Access,Syntax,Sql Update,我想在Access中运行大约100.000行更新(请参见下面的模板) 运行脚本时,将显示以下错误消息 在SQL语句结束后找到的字符 微软对这个问题的官方回答没有那么大帮助: 在SQL语句中使用分号(;)后输入了数据。例如,“SELECT*fromtable1;garbage”将生成此错误。要防止此错误,请删除分号(;)后面的所有字符 如何解决此问题?创建一个包含旧值(OldValue)和新值(NewValue)的表(UpdateTable),然后通过join进行更新 Update T set T

我想在Access中运行大约100.000行更新(请参见下面的模板)

运行脚本时,将显示以下错误消息

在SQL语句结束后找到的字符

微软对这个问题的官方回答没有那么大帮助:

在SQL语句中使用分号(;)后输入了数据。例如,“SELECT*fromtable1;garbage”将生成此错误。要防止此错误,请删除分号(;)后面的所有字符

如何解决此问题?

创建一个包含旧值(OldValue)和新值(NewValue)的表(UpdateTable),然后通过join进行更新

Update T
set T.GL = X.NewValue
from Entries T
inner join UpdateTable X
on X.OldValue = T.GL
或在访问中:

UPDATE Entries 
INNER JOIN (UpdateTable
ON Entries.GL = UpdateTable.OldValue)
SET Entries.GL = UpdateTable.NewValue

一次运行一个更新。我需要运行大约100000行。这是一个。您应该调整更新行的方式。您不是手动生成此查询,因此应该调整生成查询的程序。在Access中,查询的最大长度约为65.000个字符,不足以为100.000行编写update语句。请询问实际问题,而不是你永远无法解决的解决方案。为什么这段代码不能处理500行?@blackcornail可能是因为你将它作为一个查询执行。Access不支持一次运行多个语句,如果您将它作为一个语句执行,它将不起作用。@ErikvonAsmuth很好的一点,我已经有一段时间没有访问了
UPDATE Entries 
INNER JOIN (UpdateTable
ON Entries.GL = UpdateTable.OldValue)
SET Entries.GL = UpdateTable.NewValue