我正在尝试在SQL Server中编写SQL / XML查询以更新数据库表中的特定行。我有两个表:第一个表叫做id, year, translations, book
列。
示例
翻译=
<Translations>
<Translation Language="English" Price="120" />
<Translation Language="Russian" Price="110" />
</Translations>
book =“ 11”
第二个表称为book,其列为:id,title。 Example(id =“ 11”,Title =“ Encore une fois”)
我写了以下查询,到目前为止效果很好
UPDATE edition
SET translations.modify('insert element Translation {attribute Language
{"Norwegian"}, attribute Publisher {"KLC"}, attribute Price {200}} as last
into (/Translations)[1]');
但是现在我想使用WHERE
子句向语句中添加条件,如下所示,但我一直遇到错误
在需要条件的上下文中指定的非布尔类型的表达式
WHERE(book , year) IN (SELECT id, MAX(year)
FROM book AS b, edition AS e
WHERE title = 'Encore une fois'
AND b.id = e.book
GROUP BY 1)
添加该条件的原因是仅更新最新版本。 如何修改要在SQL Server中接受的条件?
答案 0 :(得分:1)
尝试:
UPDATE edition
SET ...
FROM edition INNER JOIN book ON edition.book = book.id
WHERE title = 'Encore une fois'
AND year IN (SELECT MAX(e2.year)
FROM edition AS e2
WHERE e2.book = book.id)