【问题标题】:SQL Server: update column with select resultSQL Server:使用选择结果更新列
【发布时间】:2018-01-12 10:40:25
【问题描述】:

我有一个表 Student,其中有一列名为 IdStudent。 IdStudent 的值为 0

学生表也有一个名为 UID 的列

我需要用表 Candidate 中的 IdCandidate 更新表 Student 中的 IdStudent。

Table Candidate 也有 UID 列,其中包含与表 Student 相同的 UID。

所以我们可以这样做来拥有IdCandidate:

 select C.IdCandidate from Candidate as C inner join Student as S
 on C.UID = S.UID

如何使用在此选择中获得的 IdCandidate 更新表 Student 中的 IdStudent?

谢谢!

【问题讨论】:

    标签: sql sql-server select sql-update inner-join


    【解决方案1】:

    在更新中使用JOIN

    update s set s.IdStudent = C.IdCandidate
    from Candidate as C 
    inner join Student as S on C.UID = S.UID
    

    【讨论】:

      【解决方案2】:

      您可以使用以下查询:

      update S set S.IdStudent = C.IdCandidate
          from Student S 
              inner join Candidate C on S.UID=C.UID
      

      【讨论】:

      • 避免发布重复的答案。我的回答与您的回答没有任何区别。
      • 请仔细检查,有区别:)
      • 在子句中更改表名会对您产生影响,如果是这样,那么您为什么不通过复制其他人并在联接中交换表名来回答每个问题。
      • 其实你抄了!您刚刚通过从 OP 的查询中复制关系进行了更新查询,但是您应该注意到 OP 的 select 查询具有主表 Candidate,但他想更新表 Student,因此更新查询应该有 @987654326 @ 作为FROM 子句中的第一个表,这是标准sql,您可以了解更多关于这些类型的查询herehere,您可以google 更多。还是谢谢。
      • @MuhammadUsman - 在JOIN 查询中以正确的顺序放置表名很重要,请正确查看,我提供的查询是标准查询,而不是接受的查询。想要学习的可以关注我上面的cmets。
      猜你喜欢
      • 2010-12-01
      • 2016-07-03
      • 1970-01-01
      • 1970-01-01
      • 2010-11-03
      • 2023-03-22
      • 1970-01-01
      • 1970-01-01
      • 2023-04-08
      相关资源
      最近更新 更多