簡體   English   中英

從選擇語句 mysql 創建表的問題

[英]issues creating a table from a select statement mysql

我正在嘗試從SELECT語句創建一個新的MySQL

   CREATE TABLE site_database AS(SELECT database_id, name, description, site_id FROM sitematrix_databases INNER JOIN site
    matrix_site_databases ON sitematrix_site_databases.database_id = sitematrix_data
    bases.database_id);

當我執行SELECT語句時,我得到:

+-------------+--------+-------------+-------------+---------+
| database_id | name   | description | database_id | site_id |
+-------------+--------+-------------+-------------+---------+
|           5 | tc2007 |             |           5 |       1 |
|           5 | tc2007 |             |           5 |       8 |
|           5 | tc2007 |             |           5 |       9 |
|           5 | tc2007 |             |           5 |      12 |
|           5 | tc2007 |             |           5 |      14 |
+-------------+--------+-------------+-------------+---------+

但是,當我嘗試創建表時,我得到:

ERROR 1052 (23000): Column 'database_id' in field list is ambiguous

我怎么解決這個問題?

在你的 select 語句中,確保你指定了數據庫 id 來自哪個表:

CREATE TABLE site_database AS(SELECT sitematrix_site_databases.database_id, name, description, site_id FROM sitematrix_databases INNER JOIN site
    matrix_site_databases ON sitematrix_site_databases.database_id = sitematrix_data
    bases.database_id);

會起作用,當多個表具有相同的字段名稱時,mysql 需要這樣做。

您可以將其簡化為:

CREATE TABLE site_database AS(SELECT ssd.database_id, name, description, site_id 
FROM sitematrix_databases as sd 
INNER JOIN sitematrix_site_databases as ssd 
ON ssd.database_id = sd.database_id)

嘗試將查詢更改為:

CREATE TABLE site_database AS(SELECT sitematrix_site_databases.database_id, name, description, site_id FROM sitematrix_databases  INNER JOIN site 
    matrix_site_databases ON sitematrix_site_databases.database_id = sitematrix_data
    bases.database_id);

由於字段 database_id 出現在兩個表中: sitematrix_databases和 in site因此存在歧義

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM