说明:
SQLite 的having 子句允许指定条件来过滤将出现在最终结果中的分组结果。
在 WHERE 子句在所选列上设置条件,而 HAVING 子句则在由 GROUP BY 子句创建的分组上设置条件。
假设有如下表:
ID NAME AGE
---------- ---------- ----------
1 xiaoming 18
2 xiaohua 18
3 mingming 19
4 xiaogang 20
5 honghong 17
6 liangliang 21
7 tingting 23
8 honghong 17
9 liangliang 21
10 honghong 23
谨记:
下面是各子句在 SELECT 查询中的位置:
SELECT
FROM
WHERE
GROUP BY
HAVING
ORDER BY
语法:
HAVING 子句必须放在 GROUP BY 子句之后,必须放在 ORDER BY 子句之前。
SELECT column1, column2
FROM table1, table2
WHERE [ conditions ]
GROUP BY column1, column2
HAVING [ conditions ]
ORDER BY column1, column2
实例:
显示所有重名的人,和重名人的个数:
sqlite> select NAME, count(NAME) from student group by NAME having count(NAME) > 1;
NAME count(NAME)
---------- -----------
honghong 3
liangliang 2
sqlite>
1. 请找出所有不重名的人?