У меня есть таблица с четырьмя столбцами (reference, id_category, id_product, name_category, name), а столбец "reference" имеет как повторяющиеся значения, так и пустые значения.
Я хочу добавить строку к пустым значениям в этом формате: (НАЧАЛЬНОЕ ИМЯ КАТЕГОРИИ) (категория id) - (id product)
например: A26-548
И я хочу добавить суффикс к повторяющимся значениям, например: (REFERENCE) - (product_id)
например: 420GF-2045
Проблема в том, что большинство эталонных значений не повторяются, и если да, я не должен их изменять.
Это часть таблицы (более 2000 строк):
reference id_category id_product name_category name
26 548 Accesorios Jarro 200ml
27 605 Papelillos OCB Slim
48 766 Herramientas Clip LST
420GF 111 2045 420 Genetics White Widow 100u
420GF 111 2163 420 Genetics Cbd Blueberry 100u
420GF 111 2164 420 Genetics Cbd Critical Mass 100u
420GF 111 2165 420 Genetics Cbd White Widow 100u
420GF21 58 1592 Feminizadas AMNESIA 4:20 1U
420GF21 58 1628 Feminizadas AK 47 10U
420GF51 58 1691 Feminizadas BLUEBERRY 420 10U
420GF51 111 2006 420 Genetics Jack Herer 100u
420GF51 111 2015 420 Genetics Mega Pack 100 u
AT01 95 1128 Extracciones Atomizador
AT01 11 1648 Vaporizadores ATMOS COMPLETE
BBF26 89 1982 Blimburn Seeds Sour Diesel 3u
BBF26 89 2068 Blimburn Seeds Critical Daddy Purple 3u
BSA07 121 1901 Buddha Seeds Vesta 3u
BSA07 121 2286 Buddha Seeds Calamity Jane 3u
Я думал, что, возможно, мне нужно экспортировать таблицу в Excel, внести изменения и затем снова импортировать таблицу.
Вы можете попробовать следующее обновление:
UPDATE yourTable t1
LEFT JOIN
(
SELECT reference
FROM yourTable
GROUP BY reference
HAVING COUNT(*) > 1
) t2
ON t1.reference = t2.reference
SET reference = CASE WHEN t1.reference IS NULL
THEN CONCAT(LEFT(t1.name_category, 1), t1.id_category, '-', t1.id_product)
WHEN t2.reference IS NOT NULL
THEN CONCAT(t1.reference, '-', t1.id_product)
ELSE t1.reference END;
Хотя это может ответить на ваш непосредственный вопрос, имейте в виду, что по мере добавления новых данных одна и та же проблема может возникнуть позже. Возможно, вы захотите изменить дизайн стола.