使用SQL Server 2012上的Join进行更新时出现问题

时间:2013-02-17 22:31:25

标签: sql-server-ce sql-update inner-join sql-server-2012 with-statement

我对SQL不是很熟悉,但是我已经把一个查询放在一起,我应该在一个表中更新两个价格(加20%税),使用另一个表中的描述加入表,这是我的问题代码: -

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中尝试了这个,但是我在'INNER'上遇到语法错误,所以我尝试使用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'。我想要做的就是将IT_PRICE表中的两个价格添加到ITEMS中符合描述的所有项目。

如果有人能指出我正确的方向,我们将非常感激。

感谢。

1 个答案:

答案 0 :(得分: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'