mysql-更新连接字符串的每个值
这个问题已经解决了,但现在我想直接更新一下 我有一张这样的桌子mysql-更新连接字符串的每个值,mysql,Mysql,这个问题已经解决了,但现在我想直接更新一下 我有一张这样的桌子 id | cod | type | qta -: | :-- | :---------- | --: 1 | aaa | aaa,bbb,ccc | 3 2 | aaa | ddd | 1 3 | aaa | eee,fff | 4 4 | aaa | ggg,hhh | 2 5 | aaa | iii | 7 6 | aaa | lll
id | cod | type | qta
-: | :-- | :---------- | --:
1 | aaa | aaa,bbb,ccc | 3
2 | aaa | ddd | 1
3 | aaa | eee,fff | 4
4 | aaa | ggg,hhh | 2
5 | aaa | iii | 7
6 | aaa | lll | 7
id | cod | type | qta
-: | :-- | :---------- | --:
1 | aaa | aaa_1,bbb_1,ccc_1 | 3
2 | aaa | ddd_1 | 1
3 | aaa | eee,fff | 4
4 | aaa | ggg_1,hhh_1 | 2
5 | aaa | iii | 7
6 | aaa | lll | 7
我希望得到这样的结果
id | cod | type | qta
-: | :-- | :---------- | --:
1 | aaa | aaa,bbb,ccc | 3
2 | aaa | ddd | 1
3 | aaa | eee,fff | 4
4 | aaa | ggg,hhh | 2
5 | aaa | iii | 7
6 | aaa | lll | 7
id | cod | type | qta
-: | :-- | :---------- | --:
1 | aaa | aaa_1,bbb_1,ccc_1 | 3
2 | aaa | ddd_1 | 1
3 | aaa | eee,fff | 4
4 | aaa | ggg_1,hhh_1 | 2
5 | aaa | iii | 7
6 | aaa | lll | 7
我想更新字符串中的每个单词,其中字符串中的单词数与'qta'相同
获取我使用的行
select *
from tab1
where char_length(type) - char_length(replace(type, ',', '')) + 1 = qta
但我想:
update tab1
SET type = ...
where char_length(type) - char_length(replace(type, ',', '')) + 1 = qta;
进行测试的链接您可以尝试以下内容
UPDATE tab1
JOIN
(SELECT
id, CONCAT(REPLACE(type, ',', '_1,'), '_1') AS type
FROM
tab1
WHERE
CHAR_LENGTH(type) - CHAR_LENGTH(REPLACE(type, ',', '')) + 1 = qta) val ON tab1.id = val.id
SET
tab1.type = val.type;
要更新匹配行,请使用以下查询:update tab1 SET type=concat(replace(type),,,,,,,,,,,,,,,,,,,,,,,,,,,,其中char_length(type)-char_length(replace(type),,,,,,,,)+1=qta;