0

我有一个现有的数据库,其表结构如下:

TABLE [Parent]
  [Parent_ID] UNIQUEIDENTIFIER 

TABLE [ChildA]
  [ChildA_ID] INT
  [Parent_ID] UNIQUEIDENTIFIER FK -> [Parent].[Parent_ID]

TABLE [ChildB]
  [ChildB_ID] INT
  [Parent_ID] UNIQUEIDENTIFIER FK -> [Parent].[Parent_ID]

为了支持未来的功能,我需要链接行ChildAChildB以便ChildB每个ChildA. 新结构应该是

TABLE [ChildA]
  [ChildA_ID] INT
  [Parent_ID] UNIQUEIDENTIFIER FK -> [Parent].[Parent_ID]

TABLE [ChildB]
  [ChildB_ID] INT
  [ChildA_ID] INT FK -> [ChildA].[ChildA_ID]
  [Parent_ID] UNIQUEIDENTIFIER FK -> [Parent].[Parent_ID]

现在,两个表都包含几乎重复的表ChildA和表中的几行。ChildB为了这个问题,我们假设每个表中的行数对于任何给定的都是相同的Parent_Id。我需要ChildA为每个选择一个唯一的ChildB,即使我必须随机选择它们。

这适用于每个表中只有一行的情况:

UPDATE b
SET    [ChildA_ID] = a.[ChildA_ID]
FROM   [ChildB] b
       INNER JOIN [ChildA] a ON a.[Parent_ID] = b.[Parent_ID]

我没有任何其他标准可以添加到JOIN. 我认为ROW_NUMBER可以,但是该数据库在 SQL Server 2000 上运行。当有多个记录时,我将如何ChildA_ID为每个分配一个?ChildB_ID

4

0 回答 0