mysql-逗号分隔的id转为逗号分隔的名称(find_in_set)

提出问题

如下图,该表中 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.idb.likes 中第一次出现的位置,从 1 开始,如果返回值大于 0 ,就说明 b.likes 中包括了 a.id,将这些记录查询出来

然后在 根据 b.likes 分组,分组后,将 a.name 的值 连接CONCAT) 起来,由 , 分割

mysql-一对多查询,一行显示(group_concat)


原文出处:http://malaoshi.top/show_1IX20mmsN5rz.html