2013-04-07 5 views
1

У меня есть две одинаковые таблицы. «Номер» и «Код продукта» формируют уникальный ключ. Эта уникальная комбинация клавиш одинакова для обеих таблиц.Mysql: обновить записи из исходной таблицы в таблицу адресатов

Я хочу вставить записи из таблицы 2 в таблицу 1. Возможно, что уникальный ключ записи уже существует. В этом случае запись должна быть обновлена ​​для всех полей. Но ... Запись только необходимо обновить, если поле даты из таблицы 2 записи более позднее, то поле даты из таблицы 1.

Я попробовал следующее:

INSERT INTO Table_dest (Number, Productcode, TransactionDate, 
         TransactionTime, Price) 
SELECT 
    Number, Productcode, TransactionDate, TransactionTime, Price 
FROM 
    Table_source 
WHERE 
    Table_source.TransactionDate >= Table_dest.TransactionDate 
    AND Table_source.TransactionTime > Table_dest.TransactionTime; 

Но это дает мне ошибка в предложении WHERE. Он также дает ошибки в дубликатах, но я не знаю, как это сделать. Любые предложения? Спасибо!

ответ

0

Вы должны следовать этому формату, а объединения двух таблиц:

INSERT INTO tableA (a1, a2, a3) 

SELECT b1, b2, b3 
FROM tableB b 
JOIN tableA a ON a.a1 = b.b1 
WHERE (CONDITION) 

Смотрите, если он работает для вас.

+0

Попробуйте запустить только запрос и проверить, что это значит. Количество столбцов в исходной и целевой таблице должно совпадать. – Harpreet

+0

Спасибо! Я сделал следующее: INSERT INTO Table_dest (Number, Productcode, TransactionDate, TransactionTime, Price) SELECT Number, Productcode, TransactionDate, TransactionTime, Price FROM Table_source s LEFT JOIN Table_dest d ON s.Number = d.Number AND s.Productcode = d .Productcode WHERE s.TransactionDate> = s.TransactionDate И s.TransactionTime> d.TransactionTime; Но теперь это дает мне сообщение об ошибке: «Столбец« Номер »в списке полей неоднозначен». –

+0

Эта ошибка возникает из-за того, что поля называются одинаково. Как и в обеих таблицах есть поля с одинаковым именем. Механизм MySQL не мог решить, какая таблица должна следовать. Попробуйте что-то вроде этого: 'SELECT s.Number, s.Productcode' – Harpreet

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