2016-08-24 94 views
1

我們正在將Access數據庫遷移到Azure,儘管嘗試了多個語法更改和刪除空格,但一個更新查詢仍無法正常工作。將Access訪問更新查詢移動到SQL服務器

下面是在訪問查詢的設計視圖: Query Design

下面是更新查詢的訪問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 Server!

回答

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 "")) ; 
+0

SQLOnly,謝謝你,我已經從更新行中拉現在你的評論是讚賞! –

0

SQL更新語法與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以及它是否能爲空。

+0

斯彭斯非常感謝*非常*!你讓我指出一個更好的方向,我需要花更多的時間用SQL來獲得正確的語法,但我希望能很快運行它。 –

+0

你是新來的。你需要按答案上的小箭頭表示你喜歡它,如果答案解決了你的問題,請點擊勾號。 – Spence