0

次のような値を持つタグフィールドを持つテーブルがあります。

table1
______
data1, data2, data3

次のような各データにIDをマップする2番目のテーブルがあります。

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

等...

次のように、タグ フィールドに table2 からのコンマ区切りの ID が含まれるように、table1 でルックアップ/置換を実行したいと考えています。

table1
______
1,2,3

私のmysqlは錆びています。私は次のようなことを考えていました:

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

ただし、空白を埋めるのに役立つ場合があります。これを達成する方法はありますか?残念ながら、t1 タグのすべてのアイテムが t2 に一致するエントリを持つわけではありません。

4

1 に答える 1

0

には本当に 1 行しかありません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 に答える