将Access更新查询移动到SQL Server

时间:2016-08-24 23:48:51

标签: sql-server azure sql-update

我们正在将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服务器的任何帮助!!!

2 个答案:

答案 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是否为空。