Mysql SQL将文本更改为唯一ID号
我有一个MySql数据库,它包含两个表。一个表(“国家”表)包含国家列表(列为唯一的国家id和国家名称)。另一个表(“州”)有一个全球地区列表(相当于美国的州)。States表中的列为state\u id、state\u name、country\u name) 我想将“State”表中的所有国家名称转换为“country”表中相应的唯一id。有办法做到这一点吗 感谢您的帮助,并提前向您表示感谢Mysql SQL将文本更改为唯一ID号,mysql,sql,Mysql,Sql,我有一个MySql数据库,它包含两个表。一个表(“国家”表)包含国家列表(列为唯一的国家id和国家名称)。另一个表(“州”)有一个全球地区列表(相当于美国的州)。States表中的列为state\u id、state\u name、country\u name) 我想将“State”表中的所有国家名称转换为“country”表中相应的唯一id。有办法做到这一点吗 感谢您的帮助,并提前向您表示感谢 添加新列以保存外键: ALTER TABLE State ADD COLUMN country_
ALTER TABLE State
ADD COLUMN country_id BIGINT UNSIGNED NULL,
ADD FOREIGN KEY (country_id) REFERENCES Country (unique_id); -- optional
上面标记为可选
的行添加了一个,该行仅在以下情况下有效:(i)两个表都使用InnoDB引擎;(ii)State.country\u id
和country.unique\u id
是相同的数据类型;以及(iii)Country.unique_id
被索引(它可能应该是该表的主键)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
上面标有可选
的行强制每个州
都有一个国家id
如果需要选择数据以查看唯一id而不是国家名称,则可以使用内部联接
select StateId, StateName, UniqueId from states
INNER JOIN countries
ON states.CountryName = countries.CountryName;
美国有多少国家?请张贴你采取的方法,以便我们能让你知道,你需要帮助的地方。哈哈。。。我不清楚。“州”表实际上包含许多国家的不同地区。。。为了方便起见,我刚刚将表命名为“State”。请提供表结构、示例数据和所需输出,以澄清您的问题。