我有一个带有标记字段的表,其值如下:
table1
______
data1, data2, data3
我有第二个表将id映射到每个数据,如:
table2
_________
id | info
1 | data1
2 | data2
3 | data3
等...
我想在table1中进行查找/替换,以便tags字段现在包含来自table2的逗号分隔id,如下所示:
table1
______
1,2,3
我的mysql生锈了。我在想这样的事情:
UPDATE table1
SET tags = REPLACE(tags, '', '')
WHERE tags LIKE ???
但可以使用一些帮助填补空白。有没有办法实现这个目标? 可能值得注意,遗憾的是t1标签中的每个项目都不会在t2中有匹配的条目。
答案 0 :(得分:0)
你真的只有一行table1
吗?
在任何情况下,您都可以通过重新构建id字符串来执行您想要的操作:
update table1
set tags = (select group_concat(t2.id)
from t2
where find_in_set(t2.info, t1.tags) > 0
)
如果您希望订单与原始代码相同:
update table1
set tags = (select group_concat(t2.id order by find_in_set(t2.info, t1.tags))
from t2
where find_in_set(t2.info, t1.tags) > 0
)