MySQL 根据一个表的字段值,更新另一个表的字段
UPDATE member_info SET
dept_id=(SELECT dept_id FROM sys_user WHERE SYS_USER.ID=member_info.user_id) ,
dept_name=(SELECT dept_name FROM sys_user WHERE SYS_USER.ID=member_info.user_id)
语句改进
UPDATE member_info mpr
JOIN sys_user su ON mpr.user_id = su.id
SET mpr.dept_id = su.dept_id,
mpr.dept_name = su.dept_name
如果只需要更新部分记录,添加 WHERE 条件:
UPDATE member_promoter_relation mpr
JOIN sys_user su ON mpr.user_id = su.id
SET mpr.dept_id = su.dept_id,
mpr.dept_name = su.dept_name
WHERE mpr.dept_id IS NULL OR mpr.dept_name IS NULL -- 示例条件
改进优势
- 性能更好:JOIN 操作通常比相关子查询更高效,特别是对于大表
- 可读性更强:JOIN 语法更清晰表达表之间的关系
- 单次扫描:原始语句可能对 sys_user 表扫描两次,改进后只扫描一次
如果 sys_user 表的 ID 字段是主键或有索引,这个查询会非常高效。
本文来自博客园,作者:VipSoft 转载请注明原文链接:https://www.cnblogs.com/vipsoft/p/19033147
浙公网安备 33010602011771号