常见的多对多关系在业务中的体现应该怎么写

我现在手上有三张表分别是:标签表,皮肤表以及皮肤标签表
他们的关系是多对多,即一个皮肤可能会有多个标签,一个标签也可能属于多个皮肤
我的需求是通过标签找皮肤
比如:
我的标签表中有蓝色,黑色,自然风,科技感几个标签
我现在要找满足黑色、科技感两个标签的皮肤应该怎么写
环境是:mySql、myBatis
要求:可扩展
比如:我后期会在标签表中加入其它标签,在不改变代码的情况下,满足多标签查询的条件

select * from skin
where exists(
select id from skinLabel
where
Label_id in (
标签id
)
and skin.id = skinLabel.skin_id
)

皮肤表skin                  skinid,skinname,其他字段
标签表label                 labelid,labelanme,其他字段
皮肤标签表 relation    skinid,labelid,其他字段

查询sql:
    select distinct s.skinid,s.skinname from skin s,relation r
    where s.skinid = r.skinid 
    and r.labelid in(select labelid from label where labelname in('黑色','科技感'))