从内部联接创建一个mysql表

时间:2012-06-14 20:02:49

标签: php mysql inner-join

我试图从两个其他表之间的内部联接创建一个mysql表。我正在处理某人创建的数据库,该数据库包含以下表格:

  • sitematrix_sites
  • sitematrix_databases

它们与另一个表格(我不知道为什么不使用外键)相关联,称为sitematrix_sites_databases,其中包含以下字段: site_iddatabase_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字段的情况下合并这两个表吗?

由于

4 个答案:

答案 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不喜欢加入具有相同列名的表。