如何在 SQL 服务器更新语句中的 WHERE 子句中使用多列
How to use multiple columns in WHERE clause in SQL Server in update statement
我正在尝试在 SQL 服务器中编写 SQL/XML 查询以更新数据库 table 中的特定行。我有两个 tables:第一个被调用的版本包含 id, year, translations, book
列。
示例
- id = "17"
- 年份 = "1997"
翻译 =
<Translations>
<Translation Language="English" Price="120" />
<Translation Language="Russian" Price="110" />
</Translations>
book = "11"
第二本 table 称为图书,具有以下列:id、title。例子(id = "11" , 标题 = "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
子句向我的语句添加条件,如下所示,但我一直收到错误消息
An expression of non-boolean type specified in a context where a condition is expected
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 服务器中接受的条件?
尝试:
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)
我正在尝试在 SQL 服务器中编写 SQL/XML 查询以更新数据库 table 中的特定行。我有两个 tables:第一个被调用的版本包含 id, year, translations, book
列。
示例
- id = "17"
- 年份 = "1997"
翻译 =
<Translations> <Translation Language="English" Price="120" /> <Translation Language="Russian" Price="110" /> </Translations>
book = "11"
第二本 table 称为图书,具有以下列:id、title。例子(id = "11" , 标题 = "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
子句向我的语句添加条件,如下所示,但我一直收到错误消息
An expression of non-boolean type specified in a context where a condition is expected
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 服务器中接受的条件?
尝试:
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)