错误代码:1060 列名重复“NA”

Posted

技术标签:

【中文标题】错误代码:1060 列名重复“NA”【英文标题】:Error Code: 1060 Duplicate column name 'NA' 【发布时间】:2014-11-05 05:44:42 【问题描述】:

我使用如下查询

INSERT INTO `tbl_contact` (`fname`,`code`,`contact`,`m_address`,`created_date`,`modified_date`,`row_status`) 
SELECT * FROM (SELECT 'LULU CENT','sdfjg','NA','NA',1991-01-01,1990-01-01,'active') 
AS tmp WHERE NOT EXISTS (SELECT `id` FROM tbl_contact WHERE CODE='sdfjg') LIMIT 1

我得到以下内容

错误代码:1060 列名重复“NA”

我的问题是我无法在我的数据库表的两列中添加相同的数据。

【问题讨论】:

你能分享你的表结构吗?可能是您已将这些字段设置为唯一键。 【参考方案1】:

当您选择常量值而不像下​​面这样命名列时

SELECT 'LULU CENT','sdfjg','NA'

返回结果的列名将与对应的列值相同,即第一列名称为LULU CENT,第二列名称为sdfjg,依此类推。

由于您的子查询如下

SELECT 'LULU CENT','sdfjg','NA','NA',1991-01-01,1990-01-01,'active'

第三列和第四列名称相同 (NA)。如果像这样将上述查询放在SELECT * FROM (...) AS tmp 中,您将收到 1060 错误

SELECT * FROM 
(
    SELECT 'LULU CENT',
    'sdfjg',
    'NA',
    'NA',
    1991-01-01,
    1990-01-01,
    'active'
) 
AS tmp

您需要为子查询中的每一列设置不同的名称,如下所示

INSERT INTO `tbl_contact` 
(
    `fname`,
    `code`,
    `contact`,
    `m_address`,
    `created_date`,
    `modified_date`,
    `row_status`
) 
SELECT * FROM 
(
    SELECT 
        'LULU CENT' AS `fname`,
        'sdfjg' AS `code`,
        'NA' AS `contact`,
        'NA' AS `m_address`,
        1991-01-01 AS `created_date`,
        1990-01-01 AS `modified_date`,
        'active' AS `row_status`
) 
AS tmp WHERE NOT EXISTS (SELECT `id` FROM tbl_contact WHERE CODE='sdfjg') LIMIT 1

【讨论】:

以上是关于错误代码:1060 列名重复“NA”的主要内容,如果未能解决你的问题,请参考以下文章

Laravel Migrate:“列已存在”1060 列名重复

MySql - 创建视图时遇到问题

在包含 is.na() 和中位数的 R 函数中传递列名

迁移时重复的列名'model_id'django mysql错误

重命名列名时的 SQLITE 语法错误代码 1

编译语句时出错:FAILED:SemanticException [错误 10036]:列名重复:p_id