在postgre数据库中,有两张这样的表,一张是用户表,一张是行政区划表,这里不探讨数据库的设计和范式问题,简单介绍一下连表更新
用户表:
t_user:
CREATE TABLE t_user (
user_id varchar(50), // 用户id
user_name varchar(50), // 用户名
gov_area varchar(50), // 行政区划
area_code varchar(50) // 行政编码
);
行政区划表:
gov_area:
CREATE TABLE gov_area (
id varchar(50), // 行政id
leval int2, // 行政等级,省是1级,市2级,区县3级,镇4级,村5级
gov_area varchar(50), // 行政区划
area_code varchar(50) // 行政编码
);
现在 t_user 的行政区划是正确的,但是行政编码错了,需要连接行政区划表进行更新
UPDATE t_user AS u
SET area_code = ud.area_code
FROM
gov_area ud
WHERE
u.gov_area IS NOT NULL
AND u.gov_area = ud.gov_area