0

我對SQL不太熟悉,但是我已經組合了一個查詢,但我應該使用另一個表中的描述在一個表中更新兩個價格(要在20%稅上添加)通過連接表,這裏是我的問題代碼: -在SQL Server 2012上使用Join進行更新的問題

UPDATE IT_PRICE 
SET ITPrice1 = Price1 + (Price1 * .2), ITPrice2 = Price2 + (Price2 * .2) 
INNER JOIN IT_PRICE 
ON ITEMS.ID = IT_PRICE.ID 
Where ITPrice1 <= 0 AND ITPrice2 <=0 AND ITEMS.Item = 'Jet Tec HP 78' 

我在SQL Express 2008的和完整的SQL 2012試過,但我得到「內部」有語法錯誤,所以我試圖從不同的打通過使用WITH語句: -

WITH Item_ID as (
SELECT ITEMS.ID FROM ITEMS WHERE ITEMS.Item = 'Jet Tec HP 78' 
) 
UPDATE IT_PRICE 
SET ITPrice1 = Price1 + (Price1 * .2), ITPrice2 = Price2 + (Price2 * .2) 
WHERE ITPrice1 <= 0 AND ITPrice2 <=0 AND ID = Item_ID 

而現在我得到'無效的列名Item_ID'當我ex執行該聲明。我想要做的是將IT_PRICE表中的兩個價格添加到ITEMS中符合描述的所有項目。

如果任何人都可以指出我在正確的方向,將非常感激。

謝謝。

+0

可能重複【如何做另一個表中的SQL Server CE表更新](http://stackoverflow.com/questions/1311236/how-to- do-sql-server-ce-table-update-from-another-table) – 2013-02-17 22:40:23

+0

看來我有SQL 2008 Compact Edition。我已經針對SQL 2012完整版運行了它,並且它已正確完成。感謝你給出這樣一個快速的答案和格式良好的代碼,你已經救了我睡在我腦海裏。 – 2013-02-17 22:51:54

回答

1

你缺少FROM子句:

UPDATE IT_PRICE 
SET ITPrice1 = Price1 + (Price1 * .2), ITPrice2 = Price2 + (Price2 * .2) 
FROM IT_PRICE ITEMS INNER JOIN IT_PRICE 
ON ITEMS.ID = IT_PRICE.ID 
Where ITPrice1 <= 0 AND ITPrice2 <=0 AND ITEMS.Item = 'Jet Tec HP 78'