2012-02-13 7 views
0

言語テーブルの各言語タイプに新しいカラムを作成したいとします。mysqlスクリプトの結果セットに基づいてテーブルの複数の新しいカラムを作成する方法はありますか

各言語は次の言語で見つかります。私は別のテーブルに新しい列を希望する各言語コードについては

..

手動で私は列text_en_GBを追加

ALTER TABLE何とかを実行します。 alter table blah add column text_fr_FR; ...

私は、以下を使用してクエリを作成することができました: 言語からconcat( "alter table blah add column text_"、code、 "; \ n")を選択してください。 これを準備して実行しますが、文のブロックでは機能しません。 :(

答えて

0

:-)より良い方法を見つけた

あなたはいくつかの例を見つけることができます);あなたが抽出されて希望の文字列とALTER TABLE ADD COLUMNを行うカーソル

SET SESSION group_concat_max_len = 1000000; 
SELECT CONCAT('ALTER TABLE blah ', GROUP_CONCAT(CONCAT('ADD COLUMN `blah_name_', `language_code`, '` varchar(255) NOT NULL') SEPARATOR ", "), ";") FROM `language` INTO @poo; 
PREPARE stmt1 FROM @poo; 
EXECUTE stmt1; 
DEALLOCATE PREPARE stmt1; 
0

あなたはCURSORSを見てみるべきでしょう。

をあなたはSELECT声明(あなたが必要とするすべての言語を抽出1)との内部LOOPためにカーソルをオープン手順を定義することができますhere

+0

私はこの解決方法を考えましたが、それは何のためのコードなのでしょうか?残念ながら、よりよい方法ではないようです。あなたの助けをありがとう。 –

+0

それは悪いことではありません...あなたが探しているものを簡単に達成するコードの20〜30行で:)最高の答えを選ぶことを忘れないでください! – VAShhh

関連する問題