我有一个奇怪的问题。我以CSV格式获取了一些城市,地区和国家的数据,并将它们导入MySQL表格。
我有3个表及其字段
1. City : id, name, country_code, region_number
2. Region : region_number, country_code, name
3. Country : country_code, name
现在情况有点复杂,因为我在区域表中添加了一个自动生成的id列,因此国家y的区域x将是唯一的。
事情是:现在我正在尝试更新城市字段region_number以保存此唯一值(区域中的新id列),因此我可以拥有关系city-> region。
关系区域 - >国家/地区 - >>区域正常。
是否可以编写更新查询来更新城市region_code(或填充一些新列,例如region_id),并使用正确的值?
如果不是查询,我可以使用什么来获取CITY表中的正确值?
我有300万条记录!
答案 0 :(得分:1)
如果我理解正确,我认为你正在寻找这样的事情:
UPDATE
City inner join Region
on City.country_code = Region.country_code
and City.region_number = Region.region_number
SET
City.new_column = Region.id
但是,由于城市和地区之间已存在关系,我不确定这是否正确,因为它会使表格不规范化。
答案 1 :(得分:1)
现在我正在尝试更新城市字段region_number以保留此唯一值
你能做到这一点的唯一方法是,如果region_number唯一地标识每个区域 - 如果已经是这种情况那么你就是通过创建冗余引用来浪费你的时间。虽然坦率地说,如果这些确实是你的桌面结构,那么就没有理由使用代理键。如果没有理由使用代理键,则区域和国家/地区表是多余的。