group 与 having
GROUP
方法通常用于结合合计函数,根据一个或多个列对结果集进行分组 。group方法只有一个参数,并且只能使用字符串。
例如,我们都查询结果按照用户id进行分组统计:
Db::name('Score')
->field('user_id,username,max(score)')
->group('user_id')
->select();
生成的SQL语句是:
SELECT user_id,username,max(score) FROM score GROUP BY user_id
也支持对多个字段进行分组,例如:
Db::name('Score')
->field('user_id,test_time,username,max(score)')
->group('user_id,test_time')
->select();
生成的SQL语句是:
SELECT user_id,test_time,username,max(score) FROM score GROUP BY user_id,test_time
HAVING
方法用于配合group
方法完成从分组的结果中筛选(通常是聚合条件)数据。having
方法只有一个参数,并且只能使用字符串,例如:
Db::name('Score')
->field('username,max(score)')
->group('user_id')
->having('count(test_time)>3')
->select();
生成的SQL语句是:
SELECT username,max(score) FROM score GROUP BY user_id HAVING count(test_time)>3