我有一个包含四列的表(reference,id_category,id_product,name_category,name)和列" reference"有重复值和空值。
我想用这种格式为空值添加一个字符串:( INITIAL OF CATEGORY NAME)(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,进行更改,然后再次导入表。
答案 0 :(得分: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;
虽然这可能会回答您的直接问题,但请记住,当您添加新数据时,相同的问题可能会在以后再次出现。您可能想要更改表格设计。