Mysql заполнить столбец «ссылка» со строками специального формата

0

У меня есть таблица с четырьмя столбцами (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, внести изменения и затем снова импортировать таблицу.

Теги:

1 ответ

2

Вы можете попробовать следующее обновление:

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;

Хотя это может ответить на ваш непосредственный вопрос, имейте в виду, что по мере добавления новых данных одна и та же проблема может возникнуть позже. Возможно, вы захотите изменить дизайн стола.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню