我们正在将Access数据库迁移到Azure,尽管尝试了多次语法更改和删除空格,但一个更新查询仍无法正常工作。
以下是Access中查询的设计视图: Query Design
以下是Access中的更新查询的SQL表达式:
UPDATE SPEND_steve, KeywordRULES
SET SPEND_steve.Category = [KeywordRULES].Category
WHERE (((SPEND_steve.Category) Is Null) AND ((SPEND_steve.ItemDescription) Like "*"
And (SPEND_steve.ItemDescription)=[KeywordRULES].[ItemDescription]
And (SPEND_steve.ItemDescription) Like "*"));
通过上述内容,我收到了error 102: Incorrect syntax near ','.
提前感谢您将此功能查询从Access移动到SQL服务器的任何帮助!!!
答案 0 :(得分:0)
尝试从第1行删除“,KeywordRULES”,UPDATE语句一次只能更新一个表(或视图)。
UPDATE SPEND_steve
SET SPEND_steve.Category =
[KeywordRULES].Category WHERE (((SPEND_steve.Category) Is Null) AND
((SPEND_steve.ItemDescription) Like "" And (SPEND_steve.ItemDescription)=
[KeywordRULES].[ItemDescription] And (SPEND_steve.ItemDescription) Like "")) ;
答案 1 :(得分:0)
SQL Update语法与Access略有不同,因为每个更新语句都应该影响单个表。但是,您可以通过联接或其他方式引用其他表,具体取决于您要执行的操作。
因此KeywordRules在您的查询中隐式加入。因此,您的目的是根据KeywordRules表中的信息更新SPEND_steve表。您可以通过加入关键字规则来完成此操作。
Update SPEND_steve
Set SPEND_steve.Category = [KeywordRULES].Category WHERE
(((SPEND_steve.Category) Is Null) AND ((SPEND_steve.ItemDescription) Like ""
And (SPEND_steve.ItemDescription) Like ""))
JOIN KeywordRules on (SPEND_steve.ItemDescription)=[KeywordRULES].[ItemDescription];
此外,您应该将like ""
更改为= ""
,这可能会提高性能,但您可能还需要检查AND IS Not NULL
是否为空。