我正在尝试从MySQL
语句创建新的SELECT
:
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
我该如何解决这个问题?
答案 0 :(得分:1)
在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)
答案 1 :(得分:0)
尝试将查询更改为:
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
和site
因此含糊不清