Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Изявление за актуализиране за множество идентификатори

Това е така, защото се опитвате да зададете column3 към върнат резултат и SQL очаква това да бъде само една стойност (скалар). Механизмът на SQL се обърква, когато му подадете повече от една върната стойност (коя трябва да използва?... не предполага итерация през резултатите). Така че, ако искате да актуализирате цял набор от резултати, тогава трябва да създадете подтаблица от вашата заявка и да се присъедините към нея. Вашата заявка трябва да изглежда по-скоро така

UPDATE Table3
SET Column3 = subtable.value
FROM Table3 
    JOIN (
        select t2.column3+t1.column3 as value, t1.id
        from table2 t2 with (nolock) join table1 t1
        on table2.id=t1.id
        where table2.id IN (100,101)
    ) AS subtable
    ON subtable.id = Table3.id
WHERE table3.id IN (100, 101)

При това предположение, че table3.id съвпада с другите идентификатори, вие наистина не се нуждаете от вътрешния where table2.id IN ...



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Съхранена процедура, която експортира данни в csv файлове, експортира само в един файл

  2. Концепции за проектиране на база данни със SQL Server Management Studio (SSMS) Част 1

  3. Оптимизиране на SQL заявки чрез премахване на оператора за сортиране в плана за изпълнение

  4. Планирайте SQL задание всеки ден в конфигурирани от потребителя времеви интервали

  5. Трикове за непрекъснато подобряване на мониторинга на базата данни