Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Cập nhật bảng bằng cách sử dụng JOIN trong SQL Server?

Bạn không có UPDATE FROM độc quyền của SQL Server cú pháp xuống. Cũng không chắc tại sao bạn cần tham gia trên CommonField và cũng lọc về nó sau đó. Hãy thử điều này:

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

Nếu bạn đang làm điều gì đó thực sự ngớ ngẩn - chẳng hạn như liên tục cố gắng đặt giá trị của một cột này thành tổng giá trị của cột khác (vi phạm nguyên tắc tránh lưu trữ dữ liệu thừa), bạn có thể sử dụng CTE (biểu thức bảng chung) - xem tại đây và tại đây để biết thêm chi tiết:

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

Lý do điều này thực sự ngớ ngẩn là bạn sẽ phải chạy lại toàn bộ bản cập nhật này mỗi lần một hàng bất kỳ trong table2 những thay đổi. A SUM là thứ mà bạn luôn có thể tính toán trong thời gian chạy và khi làm như vậy, bạn không bao giờ phải lo lắng rằng kết quả đã cũ.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Thực thi sp_msforeachdb trong ứng dụng Java

  2. Giải thích về ANSI_NULLS của Máy chủ SQL

  3. Truyền trực tuyến hình ảnh dựa trên dữ liệu bằng HttpHandler

  4. Ước tính tiết kiệm nén dữ liệu trong SQL Server

  5. SQL Pivot với nhiều cột