用于更新WHERE条件来自另一个表的列的SQL代码

时间:2015-02-21 07:22:03

标签: sql sql-server-2012

在SQL Server 2012中,我有两个表:WINE_TYPEWINE

WINE_TYPE是父表,wtCode是主键(WINE中的外键)。

我试图执行将葡萄酒价格(winePrice)更新50美分或0.50的代码。问题是......我的WHERE条件来自父表(我只需要领导Amanda McPhee (wtLeadFirst='Amanda', wtLeadLast='McPhee')制作的葡萄酒增加50美分)。

内部联接似乎不适用于此。帮助

2 个答案:

答案 0 :(得分:3)

您可以使用UPDATE ... FROM语法更新包含JOIN条件的表:

UPDATE WINE
SET WINE.WinePrice = WINE.WinePrice + 0.5
FROM
    WINE
INNER JOIN
    WINE_TYPE ON WINE.wtCode = WINE_TYPE.wtCode
WHERE
    WINE_TYPE.wtLeadFirst='Amanda' AND WINE_TYPE.wtLeadLast='McPhee'

答案 1 :(得分:1)

Update + Exists

使用Exists运算符检查父表中是否存在wtLeadFirst='Amanda'wtLeadLast='McPhee'

update W
Set Wineprice = x + Wineprice 
from Wine W 
where exists (select 1 
              from wine_type WT 
              where W.wtCode =WT.code 
              and Wt.wtLeadFirst='Amanda' 
              and Wt.wtLeadLast='McPhee' )