繁体   English   中英

如何在更新语句的SQL Server中的WHERE子句中使用多个列

[英]How to use multiple columns in WHERE clause in SQL Server in update statement

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

  • id =“ 17”
  • 年=“ 1997”
  • 翻译=

     <Translations> <Translation Language="English" Price="120" /> <Translation Language="Russian" Price="110" /> </Translations> 
  • book =“ 11”

第二个表称为book,具有以下列: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子句向语句中添加条件,如下所示,但我一直遇到错误

在需要条件的上下文中指定的非布尔类型的表达式

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中接受的条件?

尝试:

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)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM