错误代码: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 列名重复