【问题标题】:Problems doing update with Join on SQL Server 2012在 SQL Server 2012 上使用 Join 进行更新时出现问题
【发布时间】:2013-02-17 22:31:24
【问题描述】:

我对 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 表中的两个价格上对我匹配描述的所有项目加税。

如果有人能指出我正确的方向,将不胜感激。

谢谢。

【问题讨论】:

  • 我好像有SQL 2008 Compact Edition。我已经针对 SQL 2012 完整版运行它并且它已正确完成。感谢您提供如此快速的答案和格式良好的代码,您让我免于上床睡觉。

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


【解决方案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'

【讨论】:

    猜你喜欢
    • 2020-03-20
    • 1970-01-01
    • 1970-01-01
    • 2013-01-07
    • 1970-01-01
    • 2010-12-08
    • 1970-01-01
    • 2011-10-01
    • 1970-01-01
    相关资源
    最近更新 更多