![](/img/trans.png)
[英]How do I add indexes to a MySQL table when creating a new table from a SELECT statement?
[英]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.