【发布时间】:2018-07-26 21:43:56
【问题描述】:
我使用的是 SQL Server 2008 R2,我有 2 个表 Product 和 Product_Master。我只想从Product 表中更新Product_Master 中最新版本的记录,而保留早期版本。
CREATE TABLE [dbo].[Product]
(
[ProdId] [nvarchar](50) NOT NULL,
[ProdDesc] [nvarchar](50) NULL,
[ProdPrice] [decimal](18, 0) NULL,
[Version] [int] NOT NULL
) ON [PRIMARY]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Product_Master]
(
[ProdId] [nvarchar](50) NOT NULL,
[ProdDesc] [nvarchar](50) NULL,
[ProdPrice] [decimal](18, 0) NULL,
[Version] [int] NOT NULL
) ON [PRIMARY]
GO
INSERT INTO [dbo].[Product] ([ProdId], [ProdDesc], [ProdPrice], [Version])
VALUES (N'1001', N'Toys', CAST(2500 AS Decimal(18, 0)), 2),
(N'1002', N'Books', CAST(1800 AS Decimal(18, 0)), 3)
GO
INSERT INTO [dbo].[Product_Master] ([ProdId], [ProdDesc], [ProdPrice], [Version])
VALUES (N'1001', N'Toys', CAST(2500 AS Decimal(18, 0)), 2),
(N'1001', N'Toys', CAST(2000 AS Decimal(18, 0)), 1),
(N'1002', N'Perfumes', CAST(1500 AS Decimal(18, 0)), 1),
(N'1002', N'Perfumes', CAST(1500 AS Decimal(18, 0)), 2),
(N'1002', N'Perfumes', CAST(1800 AS Decimal(18, 0)), 3)
GO
附上图片以便更好地理解。
【问题讨论】:
-
使用 CTE 选择您想要的记录,然后
UPDATECTE。
标签: sql sql-server sql-server-2008-r2 sql-update