首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Mysql用特殊格式的字符串填充"reference“列

Mysql用特殊格式的字符串填充"reference“列
EN

Stack Overflow用户
提问于 2018-04-05 11:06:13
回答 1查看 19关注 0票数 0

我有一个包含四列(reference、id_category、id_product、name_category、name)的表,"reference“列既有重复值,也有空值。

我想向空值添加一个字符串,格式为:(类别名称的首字母)(id类别)-(id产品)

例如: A26-548

我想为重复的值添加一个后缀,如下所示:(REFERENCE)-(product_id)

例如: 420GF-2045

问题是大多数参考值都没有重复,如果是这样,我就不应该修改它们。

这是表的一部分(超过2000行):

代码语言:javascript
复制
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中,进行更改,然后再次导入该表。

EN

回答 1

Stack Overflow用户

发布于 2018-04-05 11:16:04

您可以尝试以下更新:

代码语言:javascript
复制
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;

虽然这可能会回答您当前的问题,但请记住,当您添加新数据时,同样的问题可能会在以后再次出现。您可能想要更改您的表设计。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49663498

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档