我有一个包含四列(reference、id_category、id_product、name_category、name)的表,"reference“列既有重复值,也有空值。
我想向空值添加一个字符串,格式为:(类别名称的首字母)(id类别)-(id产品)
例如: 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中,进行更改,然后再次导入该表。
发布于 2018-04-05 11:16:04
您可以尝试以下更新:
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;虽然这可能会回答您当前的问题,但请记住,当您添加新数据时,同样的问题可能会在以后再次出现。您可能想要更改您的表设计。
https://stackoverflow.com/questions/49663498
复制相似问题