![](/img/trans.png)
[英]Microsoft Access update specific table column with select query data
[英]Update with Select in Microsoft Access
我在column1上有没有名称“ NoName”的记录。 其中一些名称存在于同一列上,我试图使用column2来检索与“ NoName”记录具有相同引用的名称 ,以便使用实际名称进行更新。
考虑以下简化表:
| name | ref |
----------------------
| NoName | 001 |
| Adam | 002 |
| NoName | 002 |
| John | 001 |
| Ryan | 003 |
最终结果应为:
| name | ref |
----------------------
| John | 001 |
| Adam | 002 |
| Adam | 002 |
| John | 001 |
| Ryan | 003 |
到目前为止,我有:
UPDATE [Table]
SET [Name] = s.[Name]
FROM (
SELECT [Name], [Ref]
FROM [Table] as s
WHERE [Name] <> 'NoName')
WHERE
[Name]='NoName' AND [Ref] = s.[Ref]"
现在,我收到一个错误消息:
查询表达式's。[Name] FROM(SELECT [Name],[Ref] FROM [Table] as WHERE [Name] <>'NoName'))中的语法错误(缺少运算符)。
首先,MS Access使用UPDATE...JOIN
作为其语法,而不是对UPDATE
查询中的多个表使用UPDATE...FROM
。 其次,Access要求更新查询在不可更新自联接或子查询的情况下必须可更新。
但是,您可以使用域函数DLookUp
从同一表中检索值:
UPDATE [Table] t
SET t.[Name] = DLookUp("[Name]", "[Table]",
"[Name] <> 'NoName' AND [Ref] = '" & t.[Ref] & "'")
注意:仅当在MSAccess.exe(Office程序)中使用查询而不是通过ODBC / OLEDB在其后端数据库中使用查询时,此解决方案才有效。 域功能是Access对象库的一部分,而不是Jet / ACE SQL Engine。 并且假定Ref为字符串值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.