1. select的选项必须都是被group by或者having后面的聚合函数所涉及的字段,而不可包含其他字段,这里涉及了
sql_mode = only_full_group_by模式;可以通过命令行查看或更改该属性:
查看sql_model参数命令:
SELECT @@GLOBAL.sql_mode;
SELECT @@SESSION.sql_mode;
set sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,
NO_ENGINE_SUBSTITUTION';

如果不得更改该参数,那么可以将group by得到的元素作为子查询,然后结合in关键字来获得其他字段:
(参考java3y),这个还能去重,而且涉及子查询的运用。
select * from user where id in(
select min(id) from user where name = 'Java3y' and pv = 20 and time='7-25' group by name,pv,time;
)
本文详细解析了SQL中group by与having的使用规则,特别是在sql_mode=only_full_group_by模式下,如何正确选择字段避免错误。通过子查询与in关键字结合,实现对特定字段的筛选与去重。
1491

被折叠的 条评论
为什么被折叠?



