在项目中,由于业务需求迭代,需要在之前的表中扩展一个编号字段,但是扩展的字段,需要根据另一张表的id查询出一个编号。也就是需要在MySQL两表之间,根据一个表的字段更新另一个表的字段。

表的核心结构是这样的:

user表
id
case_id
case_no(新增字段)
case表
id
case_no

上面的表结构中,case_no就是新增的字段,需要通过 user.case_id = case.id,查询到 case.case_no,更新到 user.case_no 字段中。

我实现这个效果的SQL语句如下:

UPDATE USER a,
 CASE b
SET a.case_no = b.case_no
WHERE
a.case_id = b.id;

网上还有另外一种方案:

UPDATE user_base a
SET case_no = (
SELECT
case_no
FROM
case
WHERE
id = a.case_id
);

但是第二种方案我测试,一直报错 Column 'case_no' cannot be null,没有操作成功。如果大家遇到这种需求,可以使用第一种方案处理。

本文为 陈华 原创,欢迎转载,但请注明出处:http://www.ichenhua.cn/blog/post/23