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

Menggunakan gabungan di SQL Server untuk memperbarui tabel ketiga

Anda memerlukan penyimpanan sementara dari output dari pernyataan gabungan dan pernyataan pembaruan yang menggunakan variabel tabel / tabel temp.

-- Your table A, B and C
declare @A table(ID int, Col int)
declare @B table(ID int, Col int)
declare @C table(ID int, Col int)

-- Sample data
insert into @A values (1, 1),(2, 2)
insert into @B values (1, 0)
insert into @C values (1, 0),(2, 0)

-- Table var to store ouput from merge
declare @T table(ID int, Col int, Act varchar(10))

-- Merge A -> B
merge @B as B
using @A as A
on A.ID = B.ID
when not matched then insert (ID, Col) values(A.ID, A.Col)
when matched then update set Col = A.Col
output inserted.ID, inserted.Col, $action into @T;

-- Update C with rows that where updated by merge    
update C set
  Col = T.Col
from @C as C
  inner join @T as T
    on C.ID = T.ID and
       T.Act = 'UPDATE'

https://data.stackexchange.com/stackoverflow/qt/119724/



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Memahami hubungan antara fungsi peringkat, OVER(), GROUP BY?

  2. Tidak dapat menemukan kolom dbo atau fungsi yang ditentukan pengguna atau dbo agregat.Splitfn, atau namanya ambigu

  3. Cara mendapatkan Catatan Berbeda dari tabel di SQL Server - Tutorial SQL Server / TSQL 112

  4. Cara mendapatkan Kuartal kalender dari tanggal di TSQL

  5. SQL Server:Jadikan semua UPPER case menjadi Proper Case/Title Case