如果一条sql使用了 group by 那么 select 后面可以显示的字段可以有
1 group by 的字段(多个)
2 聚合函数, 函数体中字段任意,只要是表中的字段就行,不需要非得是group by 后面的字段
如果需要对分组后的每一组数据做细化的筛选,那么可以在group by 后面接having() 函数,having函数体多为聚合函数 。
特别需要注意的是,group by 分组后,只能显示合法数据,一般都是每一组中的其中一条,违反这个规则, 一定会报语法错误。
举例如下:
现在要查询同一个 task_code下的最大的event_id数据,sql如下
select task_code,max(event_id) from ad_task_event GROUP BY task_code
要查询同一个 task_code下的最大的event_id,并且要event_id>12的数据,只是having() 就要出场了
select task_code,max(event_id) from ad_task_event GROUP BY task_code having(max(event_id)>12)