Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql SQL将文本更改为唯一ID号_Mysql_Sql - Fatal编程技术网

Mysql SQL将文本更改为唯一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_

我有一个MySql数据库,它包含两个表。一个表(“国家”表)包含国家列表(列为唯一的国家id和国家名称)。另一个表(“州”)有一个全球地区列表(相当于美国的州)。States表中的列为state\u id、state\u name、country\u name)

我想将“State”表中的所有国家名称转换为“country”表中相应的唯一id。有办法做到这一点吗

感谢您的帮助,并提前向您表示感谢

  • 添加新列以保存外键:

    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”。请提供表结构、示例数据和所需输出,以澄清您的问题。