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

Актуализиране на таблица с помощта на JOIN в SQL Server?

Нямате съвсем собствения UPDATE FROM на SQL Server синтаксис надолу. Също така не сте сигурни защо трябва да се присъедините към CommonField и също филтрирайте върху него след това. Опитайте това:

UPDATE t1
  SET t1.CalculatedColumn = t2.[Calculated Column]
  FROM dbo.Table1 AS t1
  INNER JOIN dbo.Table2 AS t2
  ON t1.CommonField = t2.[Common Field]
  WHERE t1.BatchNo = '110';

Ако правите нещо наистина глупаво - като непрекъснато се опитвате да зададете стойността на една колона на съвкупността от друга колона (което нарушава принципа за избягване на съхраняването на излишни данни), можете да използвате CTE (израз за обща таблица) - вижте тук и тук за повече подробности:

;WITH t2 AS
(
  SELECT [key], CalculatedColumn = SUM(some_column)
    FROM dbo.table2
    GROUP BY [key]
)
UPDATE t1
  SET t1.CalculatedColumn = t2.CalculatedColumn
  FROM dbo.table1 AS t1
  INNER JOIN t2
  ON t1.[key] = t2.[key];

Причината, поради която това е наистина глупаво, е, че ще трябва да стартирате отново цялата тази актуализация всеки път, когато всеки ред в table2 промени. A SUM е нещо, което винаги можете да изчислите по време на изпълнение и по този начин никога не трябва да се притеснявате, че резултатът е остарял.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да деактивирате всички ограничения за проверка в базата данни на SQL Server - SQL Server / TSQL урок, част 87

  2. Как да създадете персонализирани преки пътища в SQL Server Management Studio (SSMS) - SQL Server / TSQL урок, част 10

  3. Край на поддръжката за SQL Server 2008 &2008 R2

  4. Какво е форматен низ в SQL Server?

  5. Избройте всички колони с нулеви стойности в база данни на SQL Server