Northwind库多表关联国家字典表填充对应CountryID的操作咨询
Northwind数据库CountryID字段匹配更新操作步骤
首先默认你已创建的国家字典表名为country_dict,包含两个核心字段:
country_id:你分配的国家唯一ID主键country_name:存储原4张表中提取的国家名称字符串
前置校验(必须先执行)
先排查待更新表中是否存在字典表未收录的国家,避免匹配遗漏,以Customers表为例执行:
SELECT DISTINCT Country FROM Customers WHERE Country NOT IN (SELECT country_name FROM country_dict);
如果返回结果,先将未收录的国家补充到country_dict表后再继续后续操作。
执行关联更新
根据你使用的数据库选择对应语法,剩余3张表替换表名重复执行即可:
MySQL/PostgreSQL 语法
UPDATE Customers c INNER JOIN country_dict cd ON c.Country = cd.country_name SET c.CountryID = cd.country_id;
SQL Server/Access 语法
UPDATE Customers SET CountryID = cd.country_id FROM Customers c INNER JOIN country_dict cd ON c.Country = cd.country_name;
结果校验
更新后执行以下语句验证是否全部匹配成功:
SELECT COUNT(*) FROM Customers WHERE CountryID IS NULL;
返回结果为0即代表该表所有Country都匹配到了对应ID。
注意事项
- 如果国家名称存在大小写不一致、前后空格的问题,可在关联条件中做标准化处理再匹配,示例:
TRIM(UPPER(c.Country)) = TRIM(UPPER(cd.country_name)) - 操作前建议先备份待更新的4张表,避免误操作导致数据丢失
- 所有表校验无误后,再删除原有的
Country字符串字段即可
内容的提问来源于stack exchange,提问作者Rafał Rymuza
相关产品推荐
相关产品推荐

