从MySQL获取与特定模式对应的数据

时间:2014-12-10 19:22:27

标签: mysql sql database

我有两个mysql表:

表A

id  |  name  |  favorite
 1  |  John  |   4;1;2;

等...

表B

id  |  label  |  product
 1  |   game  |   Xbox
 2  |   game  |   Playstation
 3  |   game  |   Wii

预期结果

表C

 2  |   game  |    Playstation
 3  |   game  |    Wii

我需要从表A中获取与收藏列对应的数据(数据由半列分隔)和表B中的ID行列

mysql中是否有可以执行此类查询的foreach循环?

1 个答案:

答案 0 :(得分:2)

您应该规范化表格设计。在字符串中存储事物列表是一个非常糟糕的主意。关系数据库有一个很好的结构来存储事物列表 - 它被称为而不是字符串。而且,将数字ID存储为字符串会更糟糕。

尽管如此,有时人们仍然坚持使用现有的数据库。您可以进行联接以获得所需内容:

select b.id, b.label, b.product
from tablea a join
     tableb b
     on find_in_set(b.id, replace(a.favorite, ';', ',')) > 0;