Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Perbarui tabel menggunakan GABUNG di SQL Server?

Anda tidak cukup memiliki UPDATE FROM milik SQL Server sintaks turun. Juga tidak yakin mengapa Anda perlu bergabung di CommonField dan juga menyaringnya sesudahnya. Coba ini:

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

Jika Anda melakukan sesuatu yang sangat konyol - seperti terus-menerus mencoba mengatur nilai satu kolom ke agregat kolom lain (yang melanggar prinsip menghindari penyimpanan data yang berlebihan), Anda dapat menggunakan CTE (ekspresi tabel umum) - lihat di sini dan di sini untuk lebih jelasnya:

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

Alasan mengapa ini benar-benar konyol, adalah karena Anda harus menjalankan kembali seluruh pembaruan ini setiap kali ada baris di table2 perubahan. Sebuah SUM adalah sesuatu yang selalu dapat Anda hitung saat runtime dan, dengan melakukannya, tidak perlu khawatir bahwa hasilnya basi.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mengapa menggunakan tingkat isolasi READ UNCOMMITTED?

  2. sql cross join - apa gunanya ada yang menemukannya?

  3. Gunakan OBJECTPROPERTY() untuk Menentukan Apakah Objek adalah Tampilan di SQL Server

  4. Cara Menghindari Monitor Aktivitas Menyakiti Kinerja SQL Server Anda

  5. 3 Cara menggunakan SEMUA di SQL Server