【发布时间】:2019-11-13 12:32:11
【问题描述】:
这个问题跟this 解决了,但是现在我想直接做一个更新
我有一张这样的桌子
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;
Here进行测试的链接
【问题讨论】:
-
要更新匹配的行,使用下面的查询: update tab1 SET type = concat(replace(type, ',', '_1,'),'_1') where char_length(type) - char_length(replace(type, ',', '')) + 1 = qta;
标签: mysql