首页 > 解决方案 > SQL 创建新表时自动忽略或删除重复列

问题描述

我想从 SQL 查询创建一个新表,但是我不断得到

#1060 - 列名重复idvisit

查询有效,但是当我尝试创建表时不断收到错误消息

CREATE TABLE marketin_testDatabase.results AS
SELECT *
    FROM marketin_yolopiwik.matomo_log_link_visit_action
    LEFT OUTER JOIN marketin_yolopiwik.matomo_log_visit
    ON marketin_yolopiwik.matomo_log_visit.idvisit = 
        marketin_yolopiwik.matomo_log_link_visit_action.idvisit;

标签: sql

解决方案


看来您在两个表中都有共同的列名。因此,别名表和而不是星号,分别写所有列名:

CREATE TABLE marketin_testDatabase.results AS
  SELECT a.idvisit, a.col1, a.col2 ....,
                    v.col1, v.col2 .... 
    FROM marketin_yolopiwik.matomo_log_link_visit_action a
    LEFT OUTER JOIN marketin_yolopiwik.matomo_log_visit v
    ON ( v.idvisit = a.idvisit );

如果 Only common column name is idvisit,则以下内容可与星号一起使用:

CREATE TABLE marketin_testDatabase.results AS
  SELECT a.*,
         v.col1, v.col2 .... -- all columns of "matomo_log_visit" except idvisit
    FROM marketin_yolopiwik.matomo_log_link_visit_action a
    LEFT OUTER JOIN marketin_yolopiwik.matomo_log_visit v
    ON ( v.idvisit = a.idvisit );

推荐阅读