2

我正在尝试从其他两个表之间的内部连接创建一个 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

4 回答 4

1

删除*SELECT 语句中的 并实际列出新表中所需的列。对于出现在两个原始表中的列,也要为表命名(例如sitematrix_databases.database_id)。

于 2012-06-14T20:05:27.363 回答
1

不要使用*命名每一列并使用别名。例如,sitematrix_database.database_id您可以拥有alternativeName. 您也可以通过这种方式选择您想要的列。

于 2012-06-14T20:06:49.827 回答
0

在 SQL Server 中,您可以使用“select into”。这可能是 mySql 的等效语法:

不幸的是,这是两个命令(不仅仅是一个):

CREATE TABLE recipes_new LIKE production.recipes; INSERT recipes_new SELECT * FROM production.recipes;

于 2012-06-14T20:06:05.397 回答
0

而不是使用SELECT * ...尝试SELECT database_id ...

MySQL 不喜欢连接具有相同列名的表。

于 2012-06-14T20:11:09.653 回答