我有一个包含两个表的 MySql 数据库。一个表('Country' 表)有一个国家列表(列是 unique_id 和 country_name)。另一个表(“州”)表包含全局区域列表(相当于美国各州)。 States 表中的列是 state_id、state_name、country_name)。
我想将“州”表中的所有国家/地区名称转换为“国家/地区”表中相应的唯一 ID。有没有办法做到这一点?
感谢您提供的任何帮助,并在此先感谢您。
最佳答案
添加一个新列,用于保存外键:
ALTER TABLE State ADD COLUMN country_id BIGINT UNSIGNED NULL, ADD FOREIGN KEY (country_id) REFERENCES Country (unique_id); -- optional
上面标记为
optional
的行添加了一个 foreign key constraint ,只有在以下情况下才有效:(i)两个表都使用 InnoDB 引擎; (ii)State.country_id
和Country.unique_id
是相同的数据类型; (iii)Country.unique_id
已编入索引(它可能应该是该表的主键)。使用多表
UPDATE
填充新列:UPDATE State JOIN Country USING (country_name) SET State.country_id = Country.unique_id;
删除原始列:
ALTER TABLE State DROP COLUMN country_name, MODIFY country_id BIGINT NOT NULL; -- optional
上面标记为
optional
的行强制每个State
都有一个country_id
。
关于mysql - SQL 将文本更改为唯一 ID 号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32831370/