2

他の 2 つのテーブル間の内部結合から mysql テーブルを作成しようとしています。次のテーブルを持つ誰かが作成したデータベースを扱っています。

  • sitematrix_sites
  • sitematrix_databases

それらは、次のフィールドを持つ別のテーブル (なぜ外部キーを使用しないのかわかりません) によって関連付けられていsitematrix_sites_databasesます: site_iddatabase_id.

これが、2 つのテーブルの関係です。今、私は自分の人生を楽にするためにそれを削除しようとしているので、私は持っています:

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フィールドを繰り返さずに2つのテーブルをマージする方法を誰かが知っていますか?

ありがとう

4

4 に答える 4

1

SELECT ステートメントの を削除し*、新しいテーブルに必要な列を実際にリストします。元のテーブルの両方に表示される列については、テーブルにも名前を付けます (例: sitematrix_databases.database_id)。

于 2012-06-14T20:05:27.363 に答える
1

*代わりに各列に名前を付け、エイリアスを使用しないでください。たとえば、代わりsitematrix_database.database_idalternativeName. また、この方法で必要な列を選択することもできます。

于 2012-06-14T20:06:49.827 に答える
0

SQL Server では、「select into」を使用できます。これは、mySql の同等の構文である可能性があります。

残念ながら、それは 2 つのコマンドです (1 つだけではありません)。

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

于 2012-06-14T20:06:05.397 に答える
0

SELECT * ...tryを使用する代わりにSELECT database_id ...

MySQL は、同じ列名を持つテーブルを結合することを好みません。

于 2012-06-14T20:11:09.653 に答える