2015-09-28 15 views
2

我有一個包含兩個表的MySql數據庫。一張表('國家'表)有一個國家列表(列是unique_id和country_name)。另一張表(「州」)列出了全球地區列表(相當於美國的州)。 States表中的列是state_id,state_name,country_name)。SQL將文本更改爲唯一的ID號

我想將'State'表中的所有國家名稱轉換爲'Country'表中相應的unique-id。有沒有辦法做到這一點?

任何幫助表示感謝,並提前感謝您。

+1

有多少國家是在美國? – symcbean

+0

請發佈您採取的方法,以便我們可以讓您知道,您需要幫助的地方。 – Mahiz

+1

大聲笑...我不清楚。國家表格實際上包含了來自許多國家的不同地區......我只是爲了方便起見而將表格命名爲「州」。 – GtDriver

回答

0

如果您需要選擇數據看唯一的ID,而不是國名,你可以使用內部連接

select StateId, StateName, UniqueId from states 
INNER JOIN countries 
ON states.CountryName = countries.CountryName; 
6
  1. 添加一個新列,持有外鍵:

    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_idCountry.unique_id是相同的數據類型;和(iii)Country.unique_id被索引(它應該可能是該表的主鍵)。

  2. 使用多臺UPDATE填充新列:

    UPDATE State JOIN Country USING (country_name) 
    SET State.country_id = Country.unique_id; 
    
  3. 刪除原始列:

    ALTER TABLE State 
        DROP COLUMN country_name, 
        MODIFY country_id BIGINT NOT NULL; -- optional 
    

    線條爲標誌optional以上部隊每Statecountry_id