2016-07-07 118 views
0

我有下面這個查詢。當我試着執行它時,我看到這個錯誤:SQL Server更新語句中的錯誤

Incorrect syntax near the keyword 'FROM'.

查詢:

UPDATE T 
SET T.COUNTRY_ID = DS.COUNTRY_ID, 
    T.GEO_CUST_COUNTRY_ID = DS.GEO_CUST_COUNTRY_ID 
FROM 
    DS_TRANS DS, TRANSACTIONS T 
WHERE 
    DS.ID = T.ID 

是否有人可以幫忙嗎?

+0

這雖然能正常工作。 UPDATE牛逼 SET T.COUNTRY_ID = DS.COUNTRY_ID FROM DS_TRANS DS,成交牛逼 WHERE DS.ID = T.ID – Newbie

+0

[不良習慣踢:使用舊樣式的JOIN(HTTP:// sqlblog。 com/blogs/aaron_bertrand/archive/2009/10/08/bad-habits-to-kick-using-old-style-joins.aspx) - 舊式*逗號分隔的表*樣式列表被替換爲*正確*在ANSI ANSI ** 92 ** SQL標準(**超過20年前**)中使用ANSI'JOIN'語法,並且阻止使用 –

回答

0

我猜測SQL Server不允許在UPDATE語句中使用舊樣式的ANSI-92樣式聯接。嘗試切換您的查詢使用顯式INNER JOIN

UPDATE T 
SET 
    T.COUNTRY_ID = DS.COUNTRY_ID, 
    T.GEO_CUST_COUNTRY_ID = DS.GEO_CUST_COUNTRY_ID 
FROM 
    DS_TRANS DS 
    INNER JOIN TRANSACTIONS T 
     ON DS.ID = T.ID 
1

逗號前 FROM子句的問題。

你可以使用JOIN而不是逗號分隔的表格。

因此,工作代碼爲:

UPDATE T 
SET T.COUNTRY_ID = DS.COUNTRY_ID, 
    T.GEO_CUST_COUNTRY_ID = DS.GEO_CUST_COUNTRY_ID 
FROM TRANSACTIONS T 
JOIN DS_TRANS DS ON DS.ID = T.ID 
+0

抱歉,我在此門戶中錯誤地粘貼了該逗號,但是我的確是查詢不包含它。 – Newbie

+0

@Newbie好的,JOIN方法的工作原理是什麼? – Arulkumar