我有两个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循环?
答案 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;