You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用T-SQL将一对多数据迁移至多对多StaffClient关联表?

问题:Client表一对多转多对多的数据迁移

原Client表为一对多关系(一名Staff对应多名Client),ClientId为主键,StaffId为外键。现因需求变更需改为多对多关系,需将Client表中关联数据迁移至已包含1000+行数据的StaffClient关联表。

现有数据与表结构

Client表数据

ClientId                                StaffId
----------------------------------------------------------------------------
F7DD6029-27AF-A9ED-57A2-FE25B815BFA7    3AA1C003-F0F1-49AB-84A3-26E747EE4581
1CB8FE0F-2D21-4E5B-99E9-FBBDF0EEBDC7    3AA1C003-F0F1-49AB-84A3-26E747EE4581
D87659C2-7916-4048-A165-F4BB0B4937D3    NULL
E18E3C8D-92DB-4627-BB73-F43CB67A3AEE    NULL
50795DB2-085E-46FD-97DE-F33B6AE39EE0    NULL
45FE2A69-583F-CBF7-750A-E9C93FC52D27    NULL
86B13CB5-41DB-4016-8D3D-E467B0CD6EE9    NULL
24508726-61CE-4C27-B6D7-DBABBAAD141B    8E3990F4-68B7-4F0F-AD40-923ECAC7A476
66FDFC91-1E27-4AEE-A8F6-D79B54CF601D    NULL
A99A0D77-612F-47B7-A82B-D0E51ADF1E49    NULL
59388388-5AEC-4AC5-BD54-CF802734AAD1    B7B0897A-8D40-408E-841B-598C3C425762
79747776-5867-458F-8FD5-CDD299AA3595    NULL
F5A8EFF1-3996-424C-9EF8-CD60D0B900DE    3AA1C003-F0F1-49AB-84A3-26E747EE4581

StaffClient关联表建表语句

CREATE TABLE StaffClient 
(
    StaffId uniqueidentifier,
    ClientId uniqueidentifier
    PRIMARY KEY (StaffId, ClientId),
    FOREIGN KEY (StaffId) REFERENCES Staff(StaffId),
    FOREIGN KEY (ClientId) REFERENCES Client(ClientId)
);

迁移T-SQL语句

INSERT INTO StaffClient (StaffId, ClientId)
SELECT 
    c.StaffId, 
    c.ClientId
FROM 
    Client c
WHERE 
    c.StaffId IS NOT NULL
    AND NOT EXISTS (
        SELECT 1 
        FROM StaffClient sc
        WHERE sc.StaffId = c.StaffId 
          AND sc.ClientId = c.ClientId
    );

关键说明

  • 过滤NULL值:只迁移有明确Staff关联的Client数据,无关联的Client(StaffId为NULL)无需进入多对多关联表。
  • 避免重复插入:通过NOT EXISTS检查StaffClient中是否已存在该Staff-Client组合,防止违反联合主键约束。
  • 数据完整性保障:外键约束会自动验证插入的StaffId和ClientId是否分别存在于Staff表和Client表中,确保数据合法性。

内容的提问来源于stack exchange,提问作者CodeMan03

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 21:45:29