2016-07-15 3 views
1

2つの言語を含むセットカラムと、このテーブルの別のカラムにオーダーを含むテーブルがあります。MySQLは、セットフィールドを持つテーブルからデータをマイグレーションします。

テーブルを移行し、MySQLクエリを使用して各設定項目の新しいテーブルにレコードを作成することはできますか?

レコードを直接移行すると、言語が設定されていない列が設定されたレコードで動作します。しかし、レコードに一連の言語が含まれている場合は、言語用の空の列を持つレコードが1つ残っています。私は、新鮮なテーブルに2つの新しいレコードを挿入することをお勧めします。

セット内の各言語に1つ。

INSERT INTO newtable (
    newtable.oldtable_id, 
    newtable.language, 
    newtable.order 
) 
SELECT oldtable.id, oldtable.languages, oldtable.order 
FROM oldtable 
WHERE oldtable.order IS NOT NULL; 

私はそれが可能であるが、私はまだ私は何とかデータを移行する必要があるため、誰かがこのための回避策を持っている可能性があるかどうかを知りたいと思います疑います。

+0

..:次に、あなたがMySQLのfind_in_set()機能を使用して、ヘルパーテーブルの上にソーステーブルに参加するinsert ... select ...文を作成します – scaisEdge

答えて

1

設定された列に含めることができるすべての言語をリストする1つのフィールドを持つヘルパーテーブルを作成します。この表は、移行後に削除する一時表にすることができます。サンプルデータを追加してみてくださいあなたの質問は、私には明確ではない

INSERT INTO newtable (
newtable.oldtable_id, 
newtable.language, 
newtable.order 
) 
SELECT oldtable.id, helpertable.language, oldtable.order 
FROM oldtable inner join helpertable ON find_in_set(helpertable.language, oldtable.languages)>0; 
関連する問題