Сортировка таблицы в новую таблицу

0

Я пытаюсь понять, что это навеки, поэтому решил повернуть сюда.

В настоящее время у меня есть база данных с тоннами строк, но в качестве примера она выглядит следующим образом:

 ___________________________________
|  column1  |  column2  |  column3  |
|-----------------------------------|
| 123       |     UK    | answeruk1 |
| 321       |     UK    | answeruk3 |
| 111       |     EN    | answeren2 |
| 321       |     EN    | answeren3 |
| 111       |     FR    | answerfr2 |
| 123       |     FR    | answerfr1 |
| 111       |     UK    | answeruk2 |
| 321       |     FR    | answerfr3 |
| 123       |     EN    | answeren1 |

Я пытаюсь, чтобы это было добавлено в новую таблицу, чтобы структура выглядела следующим образом:

 _______________________________________________
|  column1  |  column2  |  column3  |  column4  |
|-----------|-----------|-----------|-----------|
| 123       | answerfr1 | answeruk1 | answeren1 |
| 321       | answerfr3 | answeruk3 | answeren3 |
| 111       | answerfr2 | answeruk2 | answeren2 |

Это значит, что все они организованы по столбцу1, но в столбцах есть соответствующий код страны, найденный в столбце2

Я попытался использовать INSERT INTO, но я не могу понять, как я могу сортировать 3 столбца одновременно с 1 запросом. Есть также тонна (около 15 000-20 000) идентификатора (число, найденное в столбце 1).

Я также пробовал использовать PHP, который, я думаю, может быть единственным способом сделать это, возможно, в течение какого-то заявления, чтобы перебрать все идентификаторы?

Заранее спасибо.

  • 1
    Я не думаю, что ваша новая структура имеет какой-либо смысл.
  • 0
    Проблема заключается в том, что вы добавляете другой язык, и вам необходимо перестроить таблицу при использовании новой структуры.
Теги:

1 ответ

0

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

mysql> select * from tt;
+------+------+------+
| id   | att  | val  |
+------+------+------+
|    1 | a    | b1   |
|    1 | b    | b2   |
|    1 | c    | b3   |
|    2 | a    | b4   |
|    2 | b    | b5   |
+------+------+------+
5 rows in set (0.00 sec)


mysql> create table tt2  select id, group_concat(case when att="a" then val end) a, group_concat(case when att="b" then val end) b, group_concat(case when att="c" then val end) c from tt group by id;
Query OK, 2 rows affected (0.10 sec)
Records: 2  Duplicates: 0  Warnings: 0

mysql> select * from tt2;
+------+------+------+------+
| id   | a    | b    | c    |
+------+------+------+------+
|    1 | b1   | b2   | b3   |
|    2 | b4   | b5   | NULL |
+------+------+------+------+
2 rows in set (0.00 sec)
  • 0
    Это делает это благодаря тонне! Как сделать так, чтобы он вставлялся в текущую таблицу, а не создавал новую? Спасибо
  • 0
    Это на самом деле то же самое, просто замените создание таблицы на вставить в: вставить в tt2 выберите ....
Показать ещё 4 комментария

Ещё вопросы

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