Как использовать несколько столбцов в предложении WHERE в SQL Server в операторе обновления - PullRequest
0 голосов
/ 24 мая 2019

Я пытаюсь написать запрос SQL / XML в SQL Server, чтобы обновить определенную строку в таблице базы данных. У меня есть две таблицы: первая называется редакция с колонками id, year, translations, book.

Пример

  • id = "17"
  • year = "1997"
  • перевод = = 1012 *

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

Вторая таблица называется book, имеющей столбцы: id, title. Пример (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?

1 Ответ

1 голос
/ 25 мая 2019

Попробуйте:

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)
...