我搜索过,也许我没有正确地提出这个问题。
我继承了一个讨厌的数据库,并试图“规范化”它。 我把一张桌子分成了两个:业主和建筑物 现在我有两张一对一的桌子。
我知道如何删除重复记录(在Owners表中),但我不知道如何更新“一对多”相关表。
我有一张桌子“业主”和一张桌子“业主(一个)到建筑物(很多)”
“所有者”表架构:
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表中保留的DISTINCT OwnerID。
我希望这是有道理的。
I have already tried this但无法让它对我有用。最后,我可以使用更简单的SQL服务器或MS Access。
答案 0 :(得分:0)
要删除重复内容,您可以使用以下查询(示例查询删除重复的状态条目[按国家/地区和州重复])....
WITH dupDel
AS ( SELECT ROW_NUMBER() OVER ( PARTITION BY country, STATE ORDER BY country ) AS RowNum
FROM tblTest
)
DELETE FROM dupDel
WHERE RowNum > 1