通常我们保存一个实体,这个实体可能有多个属性或者特征,比如我们在使用搜索功能的时候,会有一些关键词或者特征,随着我们选择的关键词越多,结果集会越来越少,假如存储的是这个一个简单模型(正常实际结构要比这个复杂很多,这里只是为了说明需求)
元素(item) | 属性(attr) |
---|---|
1 | a |
2 | a |
3 | a |
1 | b |
2 | b |
1 | c |
3 | c |
我想查询同时拥有属性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 子句可以让我们筛选分组后的各组数据
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。