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

SQL Server:如何通过UID关联用Candidate表IdCandidate更新Student表IdStudent?

用Candidate表的IdCandidate更新Student表的IdStudent字段

这问题其实挺常见的,咱们核心思路就是通过两张表的UID字段关联,把Candidate里对应的IdCandidate同步到Student的IdStudent中。不同数据库的语法略有区别,我给你列几个常用的写法,你可以根据自己用的数据库来选:

MySQL/MariaDB 写法

直接用UPDATE ... JOIN语法,关联后直接更新字段:

UPDATE Student AS S
JOIN Candidate AS C ON S.UID = C.UID
SET S.IdStudent = C.IdCandidate
-- 要是只想更新当前IdStudent为0的行,就加上下面的WHERE条件
WHERE S.IdStudent = 0;

SQL Server 写法

用UPDATE ... FROM ... JOIN的语法实现:

UPDATE S
SET S.IdStudent = C.IdCandidate
FROM Student AS S
INNER JOIN Candidate AS C ON S.UID = C.UID
-- 可选:只针对IdStudent为0的记录更新
WHERE S.IdStudent = 0;

PostgreSQL 写法

PostgreSQL用UPDATE ... SET ... FROM ...的方式:

UPDATE Student AS S
SET IdStudent = C.IdCandidate
FROM Candidate AS C
WHERE S.UID = C.UID
-- 可选:过滤出IdStudent为0的行再更新
AND S.IdStudent = 0;

通用子查询写法(兼容大部分数据库)

如果不确定数据库专属语法,也可以用关联子查询,兼容性更强:

UPDATE Student
SET IdStudent = (
    SELECT C.IdCandidate
    FROM Candidate AS C
    WHERE C.UID = Student.UID
)
-- 可选:只更新IdStudent为0且有对应Candidate记录的行,避免更新为NULL
WHERE IdStudent = 0
AND EXISTS (
    SELECT 1 FROM Candidate AS C WHERE C.UID = Student.UID
);

需要注意的是,如果不是所有Student的UID都能在Candidate中找到匹配记录,最好加上EXISTS条件或者用INNER JOIN(像前几种写法那样),防止把IdStudent更新成NULL。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:55:13