我试图从两个其他表之间的内部联接创建一个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
字段的情况下合并这两个表吗?
由于
答案 0 :(得分:1)
删除SELECT语句中的*
,并在新表中列出所需的列。对于同时出现在两个原始表中的列,也请为表命名(例如sitematrix_databases.database_id
)。
答案 1 :(得分:1)
不要使用*
来命名每个列并使用别名。例如,您可以sitematrix_database.database_id
代替alternativeName
。您也可以选择您想要的列。
答案 2 :(得分:0)
在SQL Server中,您可以使用“select into”。这可能是mySql的等效语法:
不幸的是,这是两个命令(不只是一个):
CREATE TABLE recipes_new LIKE production.recipes; INSERT recipes_new SELECT * FROM production.recipes;
答案 3 :(得分:0)
而不是使用SELECT * ...
尝试SELECT database_id ...
MySQL不喜欢加入具有相同列名的表。