错误代码: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”的主要内容,如果未能解决你的问题,请参考以下文章