У меня есть две одинаковые таблицы. «Номер» и «Код продукта» формируют уникальный ключ. Эта уникальная комбинация клавиш одинакова для обеих таблиц.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. Он также дает ошибки в дубликатах, но я не знаю, как это сделать. Любые предложения? Спасибо!
Попробуйте запустить только запрос и проверить, что это значит. Количество столбцов в исходной и целевой таблице должно совпадать. – Harpreet
Спасибо! Я сделал следующее: 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; Но теперь это дает мне сообщение об ошибке: «Столбец« Номер »в списке полей неоднозначен». –
Эта ошибка возникает из-за того, что поля называются одинаково. Как и в обеих таблицах есть поля с одинаковым именем. Механизм MySQL не мог решить, какая таблица должна следовать. Попробуйте что-то вроде этого: 'SELECT s.Number, s.Productcode' – Harpreet