MySQL ON DUPLICATE KEY UPDATE и CONCAT

У меня есть запрос (Code это PRIMARY KEY):

INSERT INTO table (Code, ... events)
  VALUES
    (1, ... CONCAT(events, 'BAR')),
    (2, ... CONCAT(events, 'BAR')),
    ...
  ON DUPLICATE KEY
    UPDATE ... events = VALUES(events)

Мое намерение состоит в том, чтобы events вставляемое значение объединяется с существующим значением, если для данного ключа уже есть строка.

С моим запросом, принимая существующее значение events является FOO, новый events значения всегда 'BAR' вместо 'FOOBAR',

Как правильно добиться того, чего я хочу?

1 ответ

Решение

Чтобы объединить новое значение со старым, переместите CONCAT позвонить в UPDATE:

INSERT INTO table (Code, ... events)
  VALUES
    (1, ... 'BAR'), -- insert plain values
    (2, ... 'BAR'),
    ...
  ON DUPLICATE KEY
    UPDATE ... events = CONCAT(events, VALUES(events)) -- concat if key same
Другие вопросы по тегам