所有产品名称的参考代码

时间:2018-04-11 13:17:49

标签: mysql prestashop

我有一张表ps_product:

ps_product

-------------------------
|id_product |reference  |
-------------------------
|1          |c11111     |
|2          |x222222    |
|3          |x222222    |
-------------------------

和表ps_product_lang:

ps_product_lang

---------------------------------
|id_product |name               |
---------------------------------
|1          |Disco 1TB          |
|2          |Disco x222222 2TB  |
|3          |Disco 3TB x3333    |
---------------------------------

是否有一个MySQL脚本可以在PhPMyAdmin中运行,以便在所有产品名称中添加参考代码?

结果应为:

ps_product_lang

---------------------------------
|id_product |name               |
---------------------------------
|1          |Disco 1TB c11111   |
|2          |Disco 2TB x222222  |
|3          |Disco 3TB x3333    |
---------------------------------

由于

2 个答案:

答案 0 :(得分:0)

UPDATE `ps_product_lang` pl
LEFT JOIN `ps_product` p
    ON p.`id_product` = pl.`id_product`
SET pl.`name` = REPLACE(CONCAT(REPLACE(pl.`name`, p.`reference`, ""), " ",p.`reference`), "  ", " ");

首先,我们检查旧名称中是否存在引用并将其删除

REPLACE(pl.`name`, p.`reference`, "")

然后我们在末尾添加一个空格

CONCAT(REPLACE(pl.`name`, p.`reference`, ""), " ",p.`reference`)

最后,由于删除了旧名称字段中的引用,我们删除了不需要的双空格。

REPLACE(CONCAT(REPLACE(pl.`name`, p.`reference`, ""), " ",p.`reference`), "  ", " ")

答案 1 :(得分:0)

我认为这种方式更自然:

UPDATE ps_product_lang pl, ps_product p SET pl.name = CONCAT(RTRIM(REPLACE(pl.name, p.reference, '')), ' ', p.reference) WHERE p.id_product = pl.id_product