在SQL Server 2012中,我有两个表:WINE_TYPE
和WINE
。
WINE_TYPE
是父表,wtCode
是主键(WINE
中的外键)。
我试图执行将葡萄酒价格(winePrice
)更新50美分或0.50的代码。问题是......我的WHERE
条件来自父表(我只需要领导Amanda McPhee (wtLeadFirst='Amanda', wtLeadLast='McPhee')
制作的葡萄酒增加50美分)。
内部联接似乎不适用于此。帮助
答案 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' )