提出问题
如下图,该表中 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
) 起来,由 ,
分割