MaraiDB / MySQL Вставить в таблицу из выбранного запроса, но при дублировании ключа использовать данные из выбранного запроса

Я создал таблицу A следующим образом:

MaraiDB / MySQL Вставить в таблицу из выбранного запроса, но при дублировании ключа использовать данные из выбранного запроса

Я ввел данные выше, используя простой оператор ВСТАВИТЬ В и ВЫБРАТЬ. Теперь, когда исходные данные исправлены, я хочу использовать INSERT INTO, SELECT, ON DUPLICATE KEY UPDATE, но когда я запускаю код, 0-е и НОЛЬ, которые вы видите выше, не обновляются до нового значения.

Вот мой код

INSERT INTO
TABLEA (uniqueid, year, month, costcentre, amount)

SELECT
  SS.uniquekey, SS.year, SS.month, SS.source, SS.totalamount
FROM
 (SELECT
    uniquekey, `YEAR`, `MONTH`, SOURCE, totalamount
  FROM
    TABLEB
  UNION ALL
  SELECT
    uniquekey, `YEAR`, `MONTH`, SOURCE, totalamount
  FROM
    TABLEC
 ) as SS
ON DUPLICATE KEY 
UPDATE
  TABLEA.YEAR = VALUES(SS.year),
  TABLEA.MONTH = VALUES(SS.month), 
  TABLEA.COSTCENTRE = VALUES(SS.SOURCE), 
  TABLEA.AMOUNT = VALUES(SS.TOTALAMOUNT)
;

Итак, ответ, который я ищу, таков:

  1. Я хочу, чтобы ТАБЛИЦА имел строку для каждого УНИКАЛЬНЫЙ, который находится в запросе ВЫБРАТЬ.
  2. Если TABLEA содержит тот же УНИКАЛЬНЫЙ ИДЕНТИФИКАТОР, что и ВЫБРАТЬ, то я хочу, чтобы он обновил ГОД, МЕСЯЦ, КОСТЦЕНТР, КОЛИЧЕСТВО из запроса SELECT
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
В предыдущем посте мы создали функциональность вставки и чтения для нашей динамической СУБД. В этом посте мы собираемся реализовать функции обновления...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Роли и разрешения пользователей без пакета Laravel 9
Роли и разрешения пользователей без пакета Laravel 9
Этот пост изначально был опубликован на techsolutionstuff.com .
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
0
3
140
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Превратил мой комментарий в ответ.

Я считаю, что это должен быть ON DUPLICATE KEY UPDATE YEAR = VALUES(YEAR) - т.е. вы должны ссылаться только на имена столбцов TABLEA

Другие вопросы по теме