遇到一个这样的需求:素材有n个标签,搜索时可以标签搜索,并且要搜索条件范围<被搜索标签范围
比如:素材A又三个标签 1 2 3 搜索条件是1 可以搜出 12 可以搜出 123 可以搜出 14 不行 1234 不行 这种。
实现:select * from material m
left join tag_related tr on tr.object_id = m.material_id
where tr.tag_id in #{dto.ids}
group by m.material_id
having COUNT(DISTINCT tr.tag_id) = #{dto.ids.size}//取一个搜索条件的长度