用查找另一个表替换csv值

时间:2013-05-28 16:08:23

标签: mysql

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

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中有匹配的条目。

1 个答案:

答案 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
               )