className
- это просто строка, поэтому вы можете использовать регулярную функцию indexOf , чтобы увидеть, содержит ли список классов другую строку.
INSERT INTO tb (name, date, stat1, stat2, stat3)
VALUES (?, ?, ?, ?, ?)
ON DUPLICATE KEY UPDATE stat1 = stat1 + VALUES(stat1), stat2 = stat2 + VALUES(stat2), stat3 = stat3 + VALUES(stat3)
Добавить вычисленный столбец (сумма) и включить его в ваш ПК.
Однако это делает денормализацию вашей таблицы. Вы можете использовать суррогатный ключ и выполнять вычисления в SELECT
Если вы укажете ON DUPLICATE KEY UPDATE и вставлена строка, которая приведет к дублированию значения в индексе UNIQUE или PRIMARY KEY, MySQL выполнит ОБНОВЛЕНИЕ старой строки. Например, если столбец a объявлен как UNIQUE и содержит значение 1, следующие два оператора имеют схожий эффект:
INSERT INTO table (a, b, c) VALUES (1,2, 3) ON DUPLICATE KEY UPDATE c = c + 1;
blockquote>Пример эквивалентного обновления выглядит следующим образом:
Таблица UPDATE SET c = c + 1 WHERE a = 1;
blockquote>Если столбец a и b уникален, будет использоваться эквивалентный запрос на обновление,
Таблица UPDATE SET c = c + 1 WHERE a = 1 ИЛИ b = 2 LIMIT 1;
blockquote>