Есть ли способ создать несколько новых столбцов для таблицы на основе набора результатов с помощью сценария MySQL - PullRequest
0 голосов
/ 13 февраля 2012

Я хочу создать новый столбец для каждого типа языка в языковой таблице.

, чтобы каждый язык можно было найти с помощью: выберите код из языков;

Для каждого кода языка, который я хочуновый столбец в другой таблице ..

Вручную я бы запустил

alter table blah add column text_en_GB;изменить таблицу, бла, добавить столбец text_fr_FR;...

Я надеялся, что смогу строить запросы, используя: select concat ("alter table blah add column text_", code, "; \ n") из языков;затем подготовьте и выполните это, но это не работает с блоком операторов.(

Ответы [ 2 ]

0 голосов
/ 12 мая 2016

Нашли лучший способ: -)

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 голосов
/ 13 февраля 2012

Вам стоит взглянуть на КУРСОРЫ .

Вы можете определить процедуру, которая открывает курсор для оператора SELECT (тот, который извлекает все языки, которые вам нужны), и внутри LOOP курсора вы делаете ALTER TABLE ADD COLUMN с нужными строками. что вы извлекаете;)

Вы можете найти несколько примеров здесь

...