MySQL:有没有办法根据另一个表中的值(在单个查询中)替换部分列值

时间:2016-03-31 21:46:23

标签: mysql

这是事情: 我有一个专栏:

table1
ID  Name  Playlist
1   Hi     Category1|Category2|Category3
2   Ho     Category2|Category4|Category6
etc...

然后是另一张桌子:

table2
ID Name
1 Category1
2 Category2
3 Category3
....

在表1中,值字符串实际上是" Category1 | Category2 | Category3"。 我希望单个查询将table1的播放列表列中的所有字符串替换为table2中各自的ID,以便在查询之后,table1应如下所示:

table1
ID  Name  Playlist
1   Hi     1|2|3
2   Ho     2|4|6
etc...

我可以通过编写一个循环或类似的东西来做到这一点,但是我想在单个查询中使用它,但是,我不知道如何用不同的值替换列的值的一部分。< / p>

如果只是:

table1
    ID  Name  Playlist
    1   Hi     Category1
    2   Ho     Category2
    etc...

然后我会使用如下的查询:

UPDATE table1 a, table b SET a.playlist = b.Name WHERE a.`Playlists` = b.`Name`;

虽然我真的想要这个请求的查询,但我仍然希望听到有关更好方法的建议。

提前致谢:)

1 个答案:

答案 0 :(得分:0)

嗯,我认为它比你想象的要困难。试试这个问题:
1.看,你打算得到的结果是什么?:

SELECT playlist,REPLACE(playlist,'category','')AS MyResult FROM table1;  

2.If&#39; Myresult&#39;上面提到的查询是你想要的,然后只需更新你的表:

UPDATE table1 SET playlist=REPLACE(playlist,'category','');