2011-08-29 147 views
1

插入數據有一個表,從一個表到另一

City[city_id,state_id] 

有另一個表中同一數據庫,

Registration[reg_id,city_id] 

現在,我已經增加了一個塔送入「註冊」表,所以也成爲如以下所示,

Registration[reg_id,city_id,state_id] 

但是,問題是,STATE_ID列的值是「0」。那麼,如何根據「Registration」表的匹配city_id值從「City」表中插入「Registration」表的state_id列的值。

+1

是註冊表中的state_id與City表中的state_id具有相同的值嗎?如果是的話,那麼你正在做一個數據庫設計缺陷。一個被引用的條目應該只能被其主鍵引用。 – LeleDumbo

+0

@LeleDumbo:不要這麼分類 - 非規範化是這類實體的常見做法 – zerkms

回答

0

只要這個查詢將只執行一次 - 你可以使用這個效率不高,但可讀查詢:

UPDATE Registration r 
    SET state_id = (SELECT state_id 
        FROM City c 
        WHERE c.city_id = r.city_id) 
0

不知道MySQL,但是這就是它如何能夠在Oracle和SQL Server來完成:

UPDATE Registration r SET state_id = (SELECT state_id FROM City WHERE city_id = r.city_id) 
1

這將在MySQL中工作。在後臺指示服務器在兩個表上進行內連接。

UPDATE Registration r, City c SET r.state_id = c.state_id WHERE r.city_id = c.city_id;