Создать новую таблицу со столбцом для каждого элемента в другой таблице

0

Я создал таблицу в MySQL, где у меня есть все имена данных, которые я собираюсь внести из данных FRED.

Изображение 174551

Теперь я хочу создать новую таблицу, где имена 1504 в приведенной выше таблице примеров имеют каждый столбец.

AAA AAA10M AAAFFM ADBJORNS and so on.

Поэтому каждое имя в fred_namecol должно содержать по одному столбцу с числовым значением. Есть ли простой способ сделать это, а не писать все вручную?

Может быть, есть путь слишком циклы через каждое имя и сделать столбец для них в новую таблицу?

  • 1
    Плохая идея. MySQL имеет максимальный предел столбцов в таблицах, поэтому он потерпит неудачу со слишком большим количеством записей, если кто-то предоставит «решение». «MySQL имеет жесткий предел в 4096 столбцов на таблицу, но эффективный максимум может быть меньше для данного Таблица. Точный предел столбца зависит от нескольких факторов: "источник dev.mysql.com/doc/refman/5.7/en/column-count-limit.html
  • 0
    У вас есть таблица с вашими пользователями (1504 из них). Вы хотите сохранить числовое значение для каждого пользователя, верно? Так что просто добавьте новый столбец в таблицу пользователей с числовым типом и сохраните число там. Нет необходимости в другом столе. Делайте это в строке, а не в столбце. Если ваша модель вызывает такую настройку, я утверждаю, что ваша модель неверна.
Показать ещё 1 комментарий
Теги:
database
loops

1 ответ

0
Лучший ответ

Да. Есть выход.

В следующем запросе; замените WRITE_YOUR_TABLE_NAME_HERE именем таблицы, содержащей столбец fred_namecol:

drop table if exists columns_over_1000;
set @prefix = 'CREATE TABLE columns_over_1000 (';
set @suffix = '\n);';
select @create_table_sql := concat(
    @prefix, 
        group_concat('\n    '', fred_namecol, '' INT'), 
    @suffix) 
from 'WRITE_YOUR_TABLE_NAME_HERE';

PREPARE stmt1 FROM @create_table_sql;
EXECUTE stmt1;
DEALLOCATE PREPARE stmt1;

select * from columns_over_1000;
  • 0
    Этот код почти работает, я получаю идею, спасибо, но я получаю ошибку, не уверенную, почему: «Код ОШИБКИ: 1064. У вас ошибка в синтаксисе SQL; обратитесь к руководству по вашей версии сервера MySQL». Ошибка появляется при подготовке stmt1. Но я понял, я получаю текст со всеми именами столбцов.
  • 0
    @ A.Salehi Да, PREPARE фактически устанавливает этот текст в переменную с именем stmt1 и выполняет его. Вы можете удалить строки после и включая PREPARE и просто скопировать и вставить сгенерированный sql из результатов.
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню