代码之家  ›  专栏  ›  技术社区  ›  NoBullMan

更新外键表列

  •  -1
  • NoBullMan  · 技术社区  · 6 年前

    我正在尝试使用另一个表的数据(主键)更新表的列。创建数据库的人添加了一个“详细信息”表,其中添加到每行的所有ID,即使这些ID是相关的,所以实际上只需要一个ID就可以获取所有其他ID。”“细节”表如下:

    RecordID    int
    DepartmentID    int
    ProjectID   int
    FunctionID  int
    TaskID  int
    OwnerID int
    

    但是,“department”表已经有projectid列;表“project”有functionid列等,因此,该表中只需要ownerid来获取所有其他ID;其余的都是多余的。

    表“function”有一个“projectid”列,我需要填充它。当我跑步时:

    select distinct(functionid), ProjectID from Detail order by FunctionID, ProjectID;
    

    我得到:

    FunctionID    ProjectID
    1             5
    10            9
    11            1
    12            1
    13            8
    14            10
    15            8
    16            8
    17            1
    ...           ...
    

    我需要第二部分:

    update functions set projectid = (select ProjectID from Detail where FunctionID=?) 
    

    我需要结束一个“函数”表,其中包含那些项目ID。

    1 回复  |  直到 6 年前
        1
  •  0
  •   Zohar Peled    6 年前

    SQL Server支持 join 在update语句中,您只需要一个内部联接:

    UPDATE f
    SET projectId = d.ProjectId
    FROM functions As f
    JOIN Detail As d 
        ON f.FunctionId = d.FunctionId