SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 13.11.2012 12:14:48

savit
Завсегдатай
Зарегистрирован: 10.11.2009
Сообщений: 25

Заставить работать ON DUPLICATE KEY UPDATE при INSERT ... SELECT

Все привет.

Необходимо копировать данные одной таблицы в другую таблицу (такой же структуры) и чтобы при этом работал ON DUPLICATE KEY UPDATE ...

Такая конструкция к сожалению работать не хочет:

INSERT INTO table_dsk (field1,field2,...fieldn) SELECT field1,field2,...fieldn FROM table_mem ON DUPLICATE KEY UPDATE fieldX = fieldX + VALUES (fieldX)

в результате получаю: #1052 - Column 'fieldX' in field list is ambiguous


Приходится в приложении читать всю таблицу table_mem и составлять большущий запрос вида:

INSERT INTO table_dsk(field1, ...,fieldn) VALUES(1,3,5,10),(20,15,35,40),.... ON DUPLICATE KEY UPDATE field1=field1+VALUES(field1), ...., fieldn=fieldn+VALUES(fieldn)

такой способ работает, но мне не нравится ...

Есть ли какая-либо возможность заставить работать первый вариант?

Всем заранее спасибо.

Неактивен

 

#2 13.11.2012 13:39:52

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Заставить работать ON DUPLICATE KEY UPDATE при INSERT ... SELECT

MySQL не знает к какой таблице относится колонка fieldX. Пишите полное имя с указанием таблицы.
Вместо fieldX нужно table_mem.fieldX

Неактивен

 

#3 13.11.2012 15:05:19

savit
Завсегдатай
Зарегистрирован: 10.11.2009
Сообщений: 25

Re: Заставить работать ON DUPLICATE KEY UPDATE при INSERT ... SELECT

Все заработало.

vasya, спасибо.

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson