首页 > 解决方案 > 如何在更新语句中的 SQL Server 的 WHERE 子句中使用多个列

问题描述

我正在尝试在 SQL Server 中编写 SQL/XML 查询来更新数据库表中的某一行。我有两个表:第一个叫做 edition with columns id, year, translations, book

例子

第二个表称为 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 中接受的条件?

标签: sqlsql-serverxmlinsertsqlxml

解决方案


尝试:

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)

推荐阅读