Sql 如何删除重复项并更新“一对多”相关表?

Sql 如何删除重复项并更新“一对多”相关表?,sql,tsql,Sql,Tsql,我已经搜索过了,也许我问的问题不对 我继承了一个令人讨厌的数据库,并试图将其正常化。 我把一张桌子分成两张:业主和建筑物 现在我有两张一对一的桌子 我知道如何删除所有者表中的重复记录,但不知道如何更新一对多相关表 我有一个桌子所有者和一个桌子所有者一对多 所有者表架构: CREATE TABLE [dbo].[tbl_BuildingOwners] ( [OwnerID] [int] IDENTITY(1,1) NOT NULL, [OwnerName] [nvarcha

我已经搜索过了,也许我问的问题不对

我继承了一个令人讨厌的数据库,并试图将其正常化。 我把一张桌子分成两张:业主和建筑物 现在我有两张一对一的桌子

我知道如何删除所有者表中的重复记录,但不知道如何更新一对多相关表

我有一个桌子所有者和一个桌子所有者一对多

所有者表架构:

CREATE TABLE
    [dbo].[tbl_BuildingOwners]
(
    [OwnerID] [int] IDENTITY(1,1) NOT NULL,
    [OwnerName] [nvarchar](255) NULL,
    [OwnerAddress1] [nvarchar](255) NULL,
    [OwnerAddress2] [nvarchar](255) NULL,
    [OwnerAddress3] [nvarchar](255) NULL,
    [OwnerCity] [nvarchar](255) NULL,
    [OwnerState] [nvarchar](255) NULL,
    [OwnerZip] [float] NULL,
    [OwnerZipExt] [float] NULL,
    [OwnerPhone] [nvarchar](255) NULL,
    [OwnerFax] [nvarchar](255) NULL
)
CREATE TABLE
    [dbo].[BuildingOwnerID]
(
    [OwnerRelationshipID] [int] IDENTITY(1,1) NOT NULL,
    [OwnerID] [int] NOT NULL,
    [FileNumber] [nvarchar](255) NOT NULL
)
Ownersone到Buildingsmany关系表架构:

CREATE TABLE
    [dbo].[tbl_BuildingOwners]
(
    [OwnerID] [int] IDENTITY(1,1) NOT NULL,
    [OwnerName] [nvarchar](255) NULL,
    [OwnerAddress1] [nvarchar](255) NULL,
    [OwnerAddress2] [nvarchar](255) NULL,
    [OwnerAddress3] [nvarchar](255) NULL,
    [OwnerCity] [nvarchar](255) NULL,
    [OwnerState] [nvarchar](255) NULL,
    [OwnerZip] [float] NULL,
    [OwnerZipExt] [float] NULL,
    [OwnerPhone] [nvarchar](255) NULL,
    [OwnerFax] [nvarchar](255) NULL
)
CREATE TABLE
    [dbo].[BuildingOwnerID]
(
    [OwnerRelationshipID] [int] IDENTITY(1,1) NOT NULL,
    [OwnerID] [int] NOT NULL,
    [FileNumber] [nvarchar](255) NOT NULL
)
我需要删除BuildingOwners表中的重复项,并将BuildingOwnerID表中的OwnerID更新为BuildingOwners表中保留的不同OwnerID

我希望这是有道理的


但不能让它为我工作。最后,我可以使用SQL Server或MS Access,这两种方法都更简单。

要删除重复项,您可以使用下面的查询示例查询删除重复的状态项[按国家和州重复]

WITH    dupDel
          AS ( SELECT   ROW_NUMBER() OVER ( PARTITION BY country, STATE ORDER BY country ) AS RowNum
               FROM     tblTest
             )
    DELETE  FROM dupDel
    WHERE   RowNum > 1

@Diana现在您需要修改哪个ID。。。还是更新。。。?