mysql 将表中的子字符串替换为另一个表的字符串化值

6yoyoihd  于 2023-01-25  发布在  Mysql
关注(0)|答案(1)|浏览(142)

因此,我有两个表,其中一个表包含一个字符串,我想用另一个表的字符串替换该字符串的ID。
我想出了这个SQL,它应该工作,但它似乎像一个左连接是不允许在这种情况下。

UPDATE sales_channel_api_context AS api
SET api.payload = REPLACE(
    api.payload,
    SUBSTRING(
        api.payload,
        LOCATE('paymentMethodId":"', api.payload)+18,
        32
    ),
    LOWER(HEX(c.default_payment_method_id))
)
LEFT JOIN customer AS c
ON c.id = api.customer_id
WHERE api.payload LIKE '%paymentMethodId%' AND api.customer_id IS NOT NULL;

有人知道一个SQL查询可以做到这一点,而不需要创建另一个表吗?
可以使用临时表,但新的永久表不是解决方案。

q8l4jmvw

q8l4jmvw1#

ChatGPT给了我一个可行的解决方案,如下所示:

UPDATE sales_channel_api_context 
JOIN customer c ON c.id = sales_channel_api_context.customer_id
SET payload = 
    CASE 
    WHEN payload LIKE '%paymentMethodId%' THEN
        REPLACE(
            payload,
            SUBSTRING(
                payload,
                LOCATE('paymentMethodId":"', payload) + 18,
                32
            ),
            LOWER(HEX(c.default_payment_method_id))
        )
    ELSE payload
    END
WHERE  sales_channel_api_context.customer_id IS NOT NULL;

相关问题