0

我有一个带有标签字段的表,其值如下:

table1
______
data1, data2, data3

我有第二个表,将 id 映射到每条数据,例如:

table2
_________
id | info
1  | data1
2  | data2
3  | data3

ETC...

我想在 table1 中进行查找/替换,以便 tags 字段现在包含来自 table2 的逗号分隔 id,如下所示:

table1
______
1,2,3

我的mysql生锈了。我在想这样的事情:

   UPDATE table1   
   SET tags = REPLACE(tags, '', '')
   WHERE tags LIKE ???

但是可以使用一些帮助来填补空白。有没有办法做到这一点?可能值得注意,不幸的是,并非 t1 标签中的每个项目都会在 t2 中具有匹配的条目。

4

1 回答 1

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
               )
于 2013-05-28T16:15:18.883 回答