tags字段是逗号隔开tag id。
查询一
select i.id, i.title, i.tags, (select GROUP_CONCAT(tb_tag.title SEPARATOR ',') from tb_tag where id in (i.tags) ) as tags_title from tb_item as i;
结果:
查询二
select i.id, i.title, i.tags, (select GROUP_CONCAT(tb_tag.title SEPARATOR ',') from tb_tag where FIND_IN_SET(id,i.tags) ) as tags_title from tb_item as i;
结果
解释
在MySQL中 where in条件如果是字符串,会自动转化成int类型,内部使用了 CAST('6,8,3,2' AS INT),导致’6,8,3,2‘ 变成了6,所以查询一中 tags_title只有一个。解决方法是使用查询二中的 FIND_IN_SET。
修改时间 2021-01-14
声明:本站所有文章和图片,如无特殊说明,均为原创发布。商业转载请联系作者获得授权,非商业转载请注明出处。