SQLite HAVING 子句
HAVING子句使您可以指定条件,以过滤哪些组结果出现在最终结果中。
WHERE子句在所选列上放置条件,而HAVING子句在GROUP BY子句创建的组上放置条件。
语法
以下是HAVING子句在SELECT查询中的位置。
SELECTFROMWHEREGROUP BYHAVINGORDER BY
HAVING子句必须在查询中的GROUP BY子句之后,并且如果使用,还必须在ORDER BY子句之前。以下是SELECT语句的语法,包括HAVING子句。
SELECT column1, column2FROM table1, table2WHERE [ conditions ]GROUP BY column1, column2HAVING [ conditions ]ORDER BY column1, column2
在线示例
考虑带有以下记录的COMPANY表。
ID NAME AGE ADDRESS SALARY---------- ---------- ---------- ---------- ----------1 Paul 32 California 20000.02 Allen 25 Texas 15000.03 Teddy 23 Norway 20000.04 Mark 25 Rich-Mond 65000.05 David 27 Texas 85000.06 Kim 22 South-Hall 45000.07 James 24 Houston 10000.08 Paul 24 Houston 20000.09 James 44 Norway 5000.010 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