2012-02-13 86 views
0

我想創建一種語言表中的每個語言類型的新列設置一個表創建多個新列。有沒有辦法爲基礎的結果與MySQL腳本

所以每種語言可以與發現:從語言中選擇的代碼;

對於每種語言代碼,我想在另一個表中的新列..

手動我會運行

ALTER TABLE等等加列text_en_GB; ALTER TABLE嗒嗒添加列text_fr_FR; ...

我希望我可以建立使用查詢: 選擇CONCAT( 「改變表等等加列text_」,代碼 「; \ n」)的語言; 然後準備和執行這一點,但不與語句塊工作。 :(

回答

0

找到一個更好的辦法:-)

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聲明(就是那個提取你需要的所有語言)和的內側LOOP打開一個遊標的過程光標你做,你是提取所需的字符串的ALTER TABLE ADD COLUMN;)

你可以找到一些例子here

+0

我認爲這個解決辦法,但看起來相當大量的代碼爲它做什麼!不幸的是,似乎沒有更好的方法。非常感謝您的幫助。 – 2012-02-14 10:04:10

+0

這並不是說不好......在20-30行的代碼,你很容易達到你在尋找什麼:)不要忘記選擇最佳答案! – VAShhh 2012-02-15 10:57:35

相關問題