2016-04-16 23 views
0

私は、親の列を使用して1対1の関係を持っていたテーブルを持っていた 私たちのロジックが変更され、我々は多くを有効にする必要があったので、--unforunatly-データベースモデルを変更することは贅沢なので、各関係ごとに複数の行を挿入して、コード内にワードをグループ化していました。テーブルを1から多くの多くの多くのMYSQLに変換

私は多くの関係を反映するために、mysqlテーブルを再構成する必要があります。

Table Blog 
ID, Body, target_id, grouping 
1 etc  1   1 
2 etc  2   1 
3 etc2 1   3 
4 etc2 2   3 

これまで我々は新しいブログ記事を作成している現在、。最初の行を挿入します。そのIDを獲得し、各ターゲットのインサートを複製します。

だから、dbはかなり大きく成長しました。これをやめて関係を保持する中間テーブルを作成する必要があります。そのテーブルの上にあるので、どのように私はMySQLで任意のデータを失うことなく、新規に古いテーブルからデータを分割することができます

Table Blog 
    ID, Body 
    1 etc 
    3 etc2 

Table Blog_target 
    blog_id,target_id 
    1  , 1 
    1  , 2 
    3  , 1 
    3  , 2 

になるのだろうか?

答えて

1

このようなものがありますか? new_blog表あなたがすべて完了し、new_blogテーブルとblog_targetテーブル内のデータに満足している後、あなたは自分のブログのテーブルをドロップし、RENAME TABLE new_blog TO blog;

INSERT INTO new_blog(ID, Body) 
SELECT DISTINCT grouping, body FROM blog; 

INSERT INTO blog_target(blog_id,target_id) 
SELECT grouping,target_id 
FROM blog; 

sqlfiddle

ことができ、あなたのブログの表がすでに存在するため、
関連する問題