1

通常我们保存一个实体,这个实体可能有多个属性或者特征,比如我们在使用搜索功能的时候,会有一些关键词或者特征,随着我们选择的关键词越多,结果集会越来越少,假如存储的是这个一个简单模型(正常实际结构要比这个复杂很多,这里只是为了说明需求)

元素(item)属性(attr)
1a
2a
3a
1b
2b
1c
3c

我想查询同时拥有属性a b的元素
期望得到如下的结果

item
1
2

可以使用having关键字
select item [table_name] where attr in (a,b) group by item having count(item) =2

如果要查询同时拥有a b c 属性的元素
期望得到的结果是

item
1

同理sql是
select item [table_name] where attr in (a,b,c) group by item having count(item) =3

如果希望查询至少拥有a b c三个属性中的两个
期望得到的结果是

item
1
2
3

sql如下
select item [table_name] where attr in (a,b,c) group by item having count(item) >=2

注: HAVING 子句可以让我们筛选分组后的各组数据


润雨冰雪
36 声望4 粉丝