Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Zaktualizować tabelę za pomocą JOIN w programie SQL Server?

Nie masz własności UPDATE FROM SQL Servera składnia w dół. Nie jestem też pewien, dlaczego musiałeś dołączyć do CommonField a także filtrować go później. Spróbuj tego:

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';

Jeśli robisz coś naprawdę głupiego - jak ciągłe próbowanie ustawienia wartości jednej kolumny na agregację innej kolumny (co narusza zasadę unikania przechowywania zbędnych danych), możesz użyć CTE (wspólne wyrażenie tabelowe) - zobacz tutaj i tutaj po więcej szczegółów:

;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];

Powodem, dla którego jest to naprawdę głupie, jest to, że będziesz musiał ponownie uruchomić całą aktualizację za każdym razem, gdy dowolny wiersz w table2 zmiany. SUM to coś, co zawsze możesz obliczyć w czasie wykonywania i dzięki temu nigdy nie musisz się martwić, że wynik jest nieaktualny.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. 3 sposoby na usunięcie zduplikowanych wierszy w SQL Server, ignorując klucz podstawowy

  2. Jak ustawić nazwę tabeli w dynamicznym zapytaniu SQL?

  3. Co to jest Azure Data Studio?

  4. Jak wyeksportować wynik zapytania do pliku .csv lub pliku rozdzielanego tabulatorami w programie SQL Server Management Studio (SSMS) — samouczek SQL Server/TSQL — część 23

  5. Sposoby migracji bazy danych SQL Server do Azure SQL Database