单查询中的SQL查询更新列值两次(MySQL)

时间:2017-03-14 16:54:52

标签: mysql sql sql-update

我有一个名为data的文本列,其格式为

"`set1:val1,val2|set2:val3`" 

所以我在每组中有2组字段和n个值字段。我知道这不是规范化或正确的存储数据方法,但它是一个遗产项目,我现在无法改变架构。

现在我需要一个查询,给出每个集合的两个值说val4 and val5我需要我的最终数据字段

"`set1:val1,val2,val4|set2:val3,val5`"

我真的不是SQL查询的专家,所以需要上面的更新查询。请注意,我将始终只为每个集合获取两个值,并且需要附加到现有的设置值中。

1 个答案:

答案 0 :(得分:1)

这是一个丑陋的问题的丑陋解决方案

UPDATE table
SET data = CONCAT(REPLACE(data,'|',',val4|'), ',val5')
WHERE data = '...'

REPLACE操作将set1:val1,val2|set2:val3更改为set1:val1,val2,val4|set2:val3,然后CONACT操作将其更改为set1:val1,val2,val4|set2:val3,val5