一般咱们保存一个实体,这个实体可能有多个属性或者特征,好比咱们在使用搜索功能的时候,会有一些关键词或者特征,随着咱们选择的关键词越多,结果集会愈来愈少,假如存储的是这个一个简单模型(正常实际结构要比这个复杂不少,这里只是为了说明需求)sql
元素(item) | 属性(attr) |
---|---|
1 | a |
2 | a |
3 | a |
1 | b |
2 | b |
1 | c |
3 | c |
我想查询同时拥有属性a b的元素
指望获得以下的结果it
item |
---|
1 |
2 |
能够使用having关键字
select item [table_name] where attr in (a,b) group by item having count(item) =2table
若是要查询同时拥有a b c 属性的元素
指望获得的结果是select
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 子句能够让咱们筛选分组后的各组数据tab