Я пытаюсь создать таблицу mysql из внутреннего соединения между двумя другими таблицами. Я имею дело с созданной базой данных, которая имеет следующие таблицы:
sitematrix_sites
sitematrix_databases
Они связаны другой таблицей (я не знаю, почему не использовать внешний ключ), называемой sitematrix_sites_databases
которая имеет следующие поля: site_id
и database_id
.
Вот как связаны две таблицы. Теперь я пытаюсь удалить это, чтобы облегчить мне жизнь, поэтому у меня есть:
mysql> CREATE TABLE result AS(select * from sitematrix_databases INNER JOIN site matrix_site_databases ON sitematrix_site_databases.database_id = sitematrix_data bases.database_id); ERROR 1060 (42S21): Duplicate column name 'database_id'
Однако я получаю эту ошибку. Кто-нибудь знает, как я могу объединить две таблицы без повторения поля database_id
?
благодаря
Удалите *
в инструкции SELECT и фактически перечислите нужные столбцы в своей новой таблице. Для столбцов, которые отображаются в обеих исходных таблицах, также назовите эту таблицу (например, sitematrix_databases.database_id
).
Не используйте *
вместо имени каждого столбца и используйте псевдонимы. Например, вместо sitematrix_database.database_id
вы можете иметь alternativeName
. Также вы можете выбрать, какие столбцы вы хотите и в этом направлении.
В SQL Server вы можете использовать «select into». Это может быть эквивалентный синтаксис для mySql:
К сожалению, это две команды (не только одна):
CREATE TABLE recipes_new LIKE production.recipes; INSERT recipes_new SELECT * FROM production.recipes;
Вместо использования SELECT * ...
попробуйте SELECT database_id ...
MySQL не любит объединение таблиц с одинаковым именем столбца.