首页 > 解决方案 > MySQL,在一列上应用一个函数,然后为每一行更新另一列

问题描述

表的两个列被命名为 csv 和 s。csv 包含逗号分隔的 1 位数字作为字符串,没有重复,如 '1,5,3,2',没有重复,如 '1,5,1'。想计算“csv”中有多少个 1 和 3,并将计数放入“s”列。这就像对每个“csv”应用一个函数并将结果放入每行的“s”中。我知道如何计算,但从未见过如何将函数应用于一列并将结果放入另一列。这是在存储过程中完成的,我是否必须逐行遍历它。

标签: mysqlsql

解决方案


只是:

update mytable 
set s = char_length(csv) - char_length(replace(replace(csv, '1', ''), '3', ''))

该公式将列csv中的字符数与删除1s 和3s 后的字符数进行比较。


推荐阅读