group by的用法:
结合Aggregate 函数,根据一个或多个列对结果集进行分组。
having 的用法
分组(group by)后的筛选条件,分组后的数据组内再筛选 。
例子:建表(使用的是sqlserver)
CREATE TABLE STUDENT(
ST_ID INT IDENTITY NOT NULL, --学生编号
ST_NAME NVARCHAR(10) NULL, --学生姓名
SC_ID INT NULL, --课程编号
SCORE NULL, --分数
CONSTRAINT PK_ST_ID PRIMARY KEY (ST_ID)
)
插入数据
INSERT INTO student (ST_NAME,SC_ID,SC_NAME,SCORE) VALUES('李一',1,'英语','80')
INSERT INTO student (ST_NAME,SC_ID,SC_NAME,SCORE) VALUES('李一',2,'数学','85')
INSERT INTO student (ST_NAME,SC_ID,SC_NAME,SCORE) VALUES('李一',3,'语文','90')
INSERT INTO student (ST_NAME,SC_ID,SC_NAME,SCORE) VALUES('李二',3,'语文'','70')
执行语句:
select SC_ID from STUDENT group by SC_ID having count(SC_ID)>=2
执行结果:
3
含义:
选出课程组中重复的那一门课程
执行顺序:
1.使用group by 子句对数据进行分组
2.再在分组中再查找符合having条件的组
注意group限制的是组,而不是行,所以虽然先进行了分组但是查询结果是3而不是空