2014-11-05 4 views
2

я использовал следующий запросОшибки: 1060 Дублированного имя столбца 'NA'

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'

Моя проблема: я не могу добавить те же данные в два столбца моей таблицы базы данных.

+0

Может ли вы поделиться своим столом состав? Возможно, вы задали эти поля как уникальный ключ. – Jobayer

ответ

9

При выборе значения констант без имен столбцов, как следующие

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

имена столбцов возвращаемой результат будет таким же, как соответствующие значения столбцов, то есть имя первого столбца будет LULU CENT, в второе имя столбца будет sdfjg и т. д.

С вашего подзапросом следующая

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

Название третьего и четвертого столбца будет таким же (NA). Вы получите ошибку 1060, если вы поставите выше запрос внутри SELECT * FROM (...) AS tmp как этого

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 
+0

Большое спасибо –

Смежные вопросы