Hợp nhất tất cả các phương pháp khác nhau ở đây.
- Chọn cập nhật
- Cập nhật với biểu thức bảng chung
- Hợp nhất
Cấu trúc bảng mẫu bên dưới và sẽ cập nhật từ Product_BAK sang bảng Sản phẩm.
Sản phẩm
CREATE TABLE [dbo].[Product](
[Id] [int] IDENTITY(1, 1) NOT NULL,
[Name] [nvarchar](100) NOT NULL,
[Description] [nvarchar](100) NULL
) ON [PRIMARY]
Sản phẩm_BAK
CREATE TABLE [dbo].[Product_BAK](
[Id] [int] IDENTITY(1, 1) NOT NULL,
[Name] [nvarchar](100) NOT NULL,
[Description] [nvarchar](100) NULL
) ON [PRIMARY]
1. Chọn cập nhật
update P1
set Name = P2.Name
from Product P1
inner join Product_Bak P2 on p1.id = P2.id
where p1.id = 2
2. Cập nhật với biểu thức bảng chung
; With CTE as
(
select id, name from Product_Bak where id = 2
)
update P
set Name = P2.name
from product P inner join CTE P2 on P.id = P2.id
where P2.id = 2
3. Hợp nhất
Merge into product P1
using Product_Bak P2 on P1.id = P2.id
when matched then
update set p1.[description] = p2.[description], p1.name = P2.Name;
Trong câu lệnh Hợp nhất này, chúng ta có thể chèn thêm nếu không tìm thấy bản ghi khớp trong mục tiêu, nhưng tồn tại trong nguồn và vui lòng tìm cú pháp:
Merge into product P1
using Product_Bak P2 on P1.id = P2.id;
when matched then
update set p1.[description] = p2.[description], p1.name = P2.Name;
WHEN NOT MATCHED THEN
insert (name, description)
values(p2.name, P2.description);
SET Table.other_table_id = @NewValue
) thì hãy thay đổi câu lệnh BẬT thành một cái gì đó nhưON Table.id = @IdToEdit AND other_table.id = @NewValue