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'