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

Sql Server 2008 MERGE - cách tốt nhất để có được số lượng

Bạn có thể chỉ định một mệnh đề OUTPUT trên câu lệnh MERGE của mình và nhận được một báo cáo đầu ra về những gì đã được thực hiện trong MERGE.

MERGE (targetTable) AS t 
USING (sourceTable) AS s
ON t.ID = s.ID
WHEN MATCHED THEN
  (some statements)
WHEN NOT MATCHED THEN
  (some statements)
OUTPUT
  $action, inserted.ID 'inserted', deleted.ID 'deleted'
;

Điều này sẽ cung cấp cho bạn một hàng cho mỗi "hành động" (chèn, cập nhật, xóa) cho mỗi hoạt động. Nếu đó là nhiều câu lệnh, bạn cũng có thể ĐẦU RA VÀO @tableVar và sau đó xem biến bảng.

DECLARE @tableVar TABLE (MergeAction VARCHAR(20), InsertedID INT, DeletedID INT)

MERGE (targetTable) AS t 
USING (sourceTable) AS s
ON t.ID = s.ID
WHEN MATCHED THEN
      (some statements)
WHEN NOT MATCHED THEN
      (some statements)
OUTPUT
      $action, inserted.ID 'inserted', deleted.ID 'deleted' INTO @tableVar
;

SELECT MergeAction, COUNT(*) 
FROM @tableVar  
GROUP BY MergeAction

Xem Sách Trực tuyến để biết chi tiết về MERGE tuyên bố và mệnh đề OUTPUT .

Marc



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Đổi tên một cột trong SQL Server (T-SQL)

  2. Cách Dừng / Khởi động Hàng đợi Thư Cơ sở dữ liệu trong SQL Server (T-SQL)

  3. Thực thi một thủ tục được lưu trữ bằng Bộ lập lịch tác vụ Windows

  4. Khóa ngoài cho khóa không phải khóa chính

  5. Đồng thời lạc quan:IsConcurrencyToken và RowVersion