SQLite Having 子句

sqlite having 子句

having 子句允许指定条件来过滤将出现在最终结果中的分组结果。

where 子句在所选列上设置条件,而 having 子句则在由 group by 子句创建的分组上设置条件。

 

1. 语法

下面是 having 子句在 select 查询中的位置:

select
from
where
group by
having
order by

在一个查询中,having 子句必须放在 group by 子句之后,必须放在 order by 子句之前。下面是包含 having 子句的 select 语句的语法:

select column1, column2
from table1, table2
where [ conditions ]
group by column1, column2
having [ conditions ]
order by column1, column2

 

2. 范例

假设 company 表有以下记录:

id          name        age         address     salary
----------  ----------  ----------  ----------  ----------
1           paul        32          california  20000.0
2           allen       25          texas       15000.0
3           teddy       23          norway      20000.0
4           mark        25          rich-mond   65000.0
5           david       27          texas       85000.0
6           kim         22          south-hall  45000.0
7           james       24          houston     10000.0
8           paul        24          houston     20000.0
9           james       44          norway      5000.0
10          james       45          texas       5000.0

下面是一个范例,它将显示名称计数小于 2 的所有记录:

sqlite > select * from company group by name having count(name) < 2;

这将产生以下结果:

id          name        age         address     salary
----------  ----------  ----------  ----------  ----------
2           allen       25          texas       15000
5           david       27          texas       85000
6           kim         22          south-hall  45000
4           mark        25          rich-mond   65000
3           teddy       23          norway      20000

下面是一个范例,它将显示名称计数大于 2 的所有记录:

sqlite > select * from company group by name having count(name) > 2;

这将产生以下结果:

id          name        age         address     salary
----------  ----------  ----------  ----------  ----------
10          james       45          texas       5000

下一节:sqlite distinct 关键字

sqlite教程

相关文章