提出问题
如下图,该表中 likes 字段的值,是由 , 分割的多个 id:
关联表 t_like 如下图:
查询结果如下图,将id翻译成对应的值:
解决
select b.username,GROUP_CONCAT(a.name) as likes
from t_like a,student b
where FIND_IN_SET(a.id,b.likes) > 0
group by b.likes
作用
FIND_IN_SET(a.id,b.likes) > 0 含义如下:
FIND_IN_SET(a.id,b.likes) 返回的是 a.id 在 b.likes 中第一次出现的位置,从 1 开始,如果返回值大于 0 ,就说明 b.likes 中包括了 a.id,将这些记录查询出来
然后在 根据 b.likes 分组,分组后,将 a.name 的值 连接 (CONCAT) 起来,由 , 分割
mysql-一对多查询,一行显示(group_concat)


